Unity对象不绕正确的轴旋转

时间:2018-04-25 20:07:54

标签: c# unity3d

所以我正在编写一个能够使用鼠标移动旋转对象的脚本。 我设置的场景是一个摄像头,前面有一个物体。向左移动鼠标会导致物体向左旋转,向上移动鼠标会导致物体向上旋转等等。现在我有一点问题。当我将对象向左或向右旋转90度然后向上或向下旋转时,它会围绕Z轴而不是X轴旋转,就像我想要的那样。发生这种情况是因为当向左或向右旋转时,Z轴和X轴的旋转与Y轴的操作较早。

我制作了两个展示问题的GIF:

以下是我目前正在使用的代码:

public float object_rotSens = 100.0f;
float object_rotY = 0.0f;
float object_rotX = 0.0f;    

void Update()
{
object_rotX += Input.GetAxis("Mouse X") * object_rotSens * Time.deltaTime;
object_rotY += Input.GetAxis("Mouse Y") * object_rotSens * Time.deltaTime;
objectImRotating.transform.localEulerAngles = new Vector3(object_rotY, -object_rotX, 0);
}

我希望有人可以帮我改变代码,这样即使对象围绕Y轴旋转任何数量,我都有首选旋转。提前谢谢!

更新

Chris H帮助我解决了这个问题。对于在这里遇到同样问题的人,有什么帮助我解决问题:

object_rotX = Input.GetAxis("Mouse X") * object_rotSens * Time.deltaTime;
object_rotY = Input.GetAxis("Mouse Y") * object_rotSens * Time.deltaTime;
objectImRotating.transform.RotateAround(objectImRotating.transform.position, new Vector3(object_rotY, -object_rotX, 0), 100 * Time.deltaTime);

1 个答案:

答案 0 :(得分:3)

尝试使用Transform.RotateAround代替localEulerAngles。