有人能解释为什么这种方法不能作为正常的fps相机运动吗?我将Z-Axis设置为0,但测试时它会发生变化。我可以使用四元数,但我真的不明白为什么这个方法不能工作。
void onCameraLook() {
mouseX = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity;
mouseY = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity;
transform.Rotate(-mouseY, mouseX, 0, Space.Self);
}发布于 2020-04-12 16:09:01
如果使用Rotate调用Space.Self,则对象将围绕其本地轴旋转。
对于“普通fps相机”,这对于垂直旋转来说很好,你想要绕着局部x/右轴旋转,但是对于水平旋转,你想要物体围绕全局y/向上轴旋转。有关更详细的帖子,请参阅rotating an object on two axes。
所以你的代码应该是:
void onCameraLook() {
mouseX = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity;
mouseY = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity;
transform.Rotate(-mouseY, 0, 0, Space.Self);
transform.Rotate(0, mouseX, 0, Space.World);
}https://stackoverflow.com/questions/61170077
复制相似问题