所以我正在编写一个能够使用鼠标移动旋转对象的脚本。 我设置的场景是一个摄像头,前面有一个物体。向左移动鼠标会导致物体向左旋转,向上移动鼠标会导致物体向上旋转等等。现在我有一点问题。当我将对象向左或向右旋转90度然后向上或向下旋转时,它会围绕Z轴而不是X轴旋转,就像我想要的那样。发生这种情况是因为当向左或向右旋转时,Z轴和X轴的旋转与Y轴的操作较早。
我制作了两个展示问题的GIF:
我想要永远发生的事情:https://media.giphy.com/media/wsUxoi9LyXXbB24PNg/giphy.gif
实际发生了什么:https://media.giphy.com/media/1jl3MNtMuXW9AAUQOZ/giphy.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);