空洞骑士类型制作;
小骑士的翻转;
private void Direction()
{
if (moveX > 0)
{
transform.localScale = flippedScale;
}
else if (moveX < 0)
{
transform.localScale = Vector3.one;
}
}
分析解释:
1.
函数定义:
2.
private void Direction(): 这是一个私有函数 Direction,没有返回值 (void)。它用来调整角色对象的缩放。
3.
条件判断:
4.
if (moveX > 0): 如果水平移动量 moveX 大于 0,即角色正在向右移动。
transform.localScale = flippedScale;: 将角色的本地缩放设置为 flippedScale。这里假设 flippedScale 是一个 Vector3 变量,用来表示角色在水平翻转时的缩放状态,通常用来实现角色朝右时的镜像效果。
else if (moveX < 0): 如果水平移动量 moveX 小于 0,即角色正在向左移动。
transform.localScale = Vector3.one;: 将角色的本地缩放设置为 Vector3.one,即正常的缩放状态。Vector3.one 表示缩放为正常大小,即 (1, 1, 1)。
5.
解释说明:
6.
函数中的 transform.localScale 用于控制角色对象的本地缩放。这个属性影响了角色在场景中的尺寸大小和方向。
当 moveX > 0 时,通常表示角色向右移动,因此设置 transform.localScale 为 flippedScale 可能会导致角色在水平方向上的翻转效果。
当 moveX < 0 时,通常表示角色向左移动,因此将 transform.localScale 设置为 Vector3.one 会将角色恢复到正常的方向和大小。
这种方法通常用于在角色转向时实现水平方向的镜像效果,例如在角色面朝右时显示正常的形象,在面朝左时进行翻转。
对于小骑士的移动:
// 获取水平和垂直输入
moveX = Input.GetAxis("Horizontal");
moveY = Input.GetAxisRaw("Vertical");
// 根据水平输入调整刚体的速度
rigi.velocity = new Vector2(moveX * moveSpeed, rigi.velocity.y);
// 根据水平输入设置动画状态
if (moveX > 0)
{
moveChangeAni = 1; // 向右移动
}
else if (moveX < 0)
{
moveChangeAni = -1; // 向左移动
}
else
{
moveChangeAni = 0; // 静止
}
// 将动画状态传递给动画控制器
animator.SetInteger("movement", moveChangeAni);
}
分析解释:
1.
函数定义:
2.
private void Movement(): 这是一个私有函数 Movement,没有返回值 (void)。它用来处理角色的移动和相应的动画状态控制。
3.
输入处理:
4.
moveX = Input.GetAxis("Horizontal");: 获取水平轴的输入值。通常,这个值会在 -1(左移动)到 1(右移动)之间变化。
moveY = Input.GetAxisRaw("Vertical");: 获取垂直轴的输入值。使用 GetAxisRaw 可以获得没有平滑处理的输入,通常返回 -1(向下移动)到 1(向上移动)之间的整数值。
5.
刚体速度设置:
6.
rigi.velocity = new Vector2(moveX * moveSpeed, rigi.velocity.y);: 根据 moveX 的值设置刚体 (rigi) 在水平方向上的速度。moveSpeed 是一个控制移动速度的参数。
7.
动画状态设置:
8.
if (moveX > 0) { moveChangeAni = 1; }: 如果 moveX 大于 0,即角色向右移动,则则将 moveChangeAni 设置为 1。
else if (moveX < 0) { moveChangeAni = -1; }: 如果 moveX 小于 0,即角色向左移动,则将 moveChangeAni 设置为 -1。
else { moveChangeAni = 0; }: 如果 moveX 等于 0,即角色静止,则将 moveChangeAni 设置为 0。
9.
动画控制器设置:
10.
animator.SetInteger("movement", moveChangeAni);: 将 moveChangeAni 的值传递给动画控制器 (animator) 中名为 "movement" 的整数参数。这个参数通常用来控制角色动画的不同状态,比如走路、跑步、站立等。