Unity相机启动时绕X轴偏移90度问题求助
解决Unity相机启动时X轴偏移90度的问题
问题原因
你的代码在Update中通过transform.rotation = Quaternion.Euler(xRotation, 0f, 0f)强制覆盖了相机旋转:
xRotation初始值设为0,会直接把相机X轴旋转重置为0,覆盖你在编辑器中设置的初始朝向- 同时强制将Y、Z轴旋转锁死为0,破坏了相机与
playerBody的旋转同步逻辑
修复步骤
1. 初始化xRotation为相机初始旋转值
在Start方法中,让xRotation继承编辑器里相机的初始X轴旋转角度:
void Start() { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; // 读取相机当前的X轴初始旋转 xRotation = transform.eulerAngles.x; // 处理欧拉角0-360的循环问题,将大于180的角度转为负数值 if (xRotation > 180f) { xRotation -= 360f; } }
2. 同步相机Y轴旋转与playerBody
修改Update中的旋转赋值逻辑,让相机Y轴旋转跟随playerBody,保证左右转动视角一致:
void Update() { float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime; float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime; xRotation -= mouseY; xRotation = Mathf.Clamp(xRotation, -90f, 90f); // 让相机Y轴旋转与playerBody保持同步 transform.rotation = Quaternion.Euler(xRotation, playerBody.eulerAngles.y, 0f); playerBody.Rotate(Vector3.up * mouseX); }
3. 检查编辑器基础设置
- 确认相机是
playerBody的直接子物体 - 在Inspector面板中,将相机初始旋转的X轴值设为0(或你需要的初始朝向角度)
内容的提问来源于stack exchange,提问作者dmitry rubanov
相关产品推荐
相关产品推荐

