You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:35:04