Unity相机控制脚本Y轴反向移动问题求助
解决Unity相机Y轴反向移动问题
问题出在鼠标Y轴输入的处理逻辑上,只需要修改一行代码就能解决:
把 xRotation += mouseY; 改成 xRotation -= mouseY;
修改后的完整代码:
public class PlayerCam : MonoBehaviour { public float sensX; public float sensY; public Transform orientation; float xRotation; float yRotation; void Start() { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } void Update() { //Get mouse input float mouseX = Input.GetAxisRaw("Mouse X") * Time.deltaTime * sensX; float mouseY = Input.GetAxisRaw("Mouse Y") * Time.deltaTime * sensY; yRotation += mouseX; xRotation -= mouseY; // 这里是修改的核心行 xRotation = Mathf.Clamp(xRotation, -90f, 90f); //rotate cam and orientation transform.rotation = Quaternion.Euler(xRotation, yRotation, 0); orientation.rotation = Quaternion.Euler(0, yRotation, 0); } }
原因很直观:Unity中Input.GetAxisRaw("Mouse Y")的返回值,向上移动鼠标时为正、向下为负,但相机的俯仰旋转(X轴欧拉角)需要反向逻辑——向上移鼠标要让相机抬头(对应X轴旋转值减少),向下移鼠标让相机低头(对应X轴旋转值增加),对mouseY取反就能匹配正常的操作直觉。
内容的提问来源于stack exchange,提问作者kipt
相关产品推荐
相关产品推荐

