[英]Unity 3D Movement Problem when moving backward
以下代码假设根据 plyer 的输入移动和旋转角色。 但是,它在向前、向左和向右移动时运行良好,但在向后移动时会继续旋转。
有谁知道这是为什么? 我真的不知道这怎么可能,它使用完全相同的代码向其他方向移动,为什么它在向后移动时不起作用?!
请帮我。 我正在为此失去理智。
代码放在 Update() function 中。
PS:所以,现在我确定问题是总是触发向后移动的 if 语句。 我在向后移动时记录了 transform.foward,它输出 (0,0,-1) 但等于 function 仍然返回 false。 我不明白为什么会这样,为什么这不会发生在任何其他方向。 请帮忙,谢谢!
PSS:所以我切换了。等于 function 到 == 操作,它现在可以工作了。 仍然很好奇为什么会发生这种情况。
// Player Movements
hInput = Input.GetAxis("Horizontal");
vInput = Input.GetAxis("Vertical");
if(Mathf.Abs(hInput) > Mathf.Abs(vInput))
{
if(hInput > 0)
{
// move right
if (!transform.forward.Equals(new Vector3(1, 0, 0)))
{
transform.Rotate(90, 0, 0);
}
} else if(hInput < 0)
{
// move left
if (!transform.forward.Equals(new Vector3(-1, 0, 0)))
{
transform.Rotate(-90, 0, 0);
}
}
controller.Move(new Vector3(hInput, 0, 0) * mSpeed * Time.deltaTime);
} else if(Mathf.Abs(hInput) < Mathf.Abs(vInput))
{
if (vInput > 0)
{
// move forward
if (!transform.forward.Equals(new Vector3(0, 0, 1)))
{
transform.Rotate(90, 0, 0);
}
}
else if (vInput < 0)
{
// move backward
if (!transform.forward.Equals(new Vector3(0, 0, -1)))
{
transform.Rotate(-90, 0, 0);
}
}
controller.Move(new Vector3(0, 0, vInput) * mSpeed * Time.deltaTime);
}strong text
播放器上有哪些组件? 另外,我建议记录 transform.foward function
UnityEngine.Debug.Log(transform.forward)
看来 transform.foward 最有可能是您的问题的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.