鼠标横向移动对应 Transform 在y轴上的旋转,纵向移动对应x轴上的旋转,一般采用以下方式。
Vector2 vector2 = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
cameraObj.Rotate(Vector3.up, vector2.x, Space.World);
cameraObj.Rotate(transform.right * -vector2.y);
注意 line2 的第三个参数Space.World,不应该以cameraObj的up方向来旋转,而应该总是以世界坐标系的up方向来旋转。
如图,以摄像机的本地坐标系的up方向(绿色箭头)旋转,则会发生奇怪的效果。
绝大多数FPS游戏在横向移动视角时,永远是基于世界坐标系的up方向。