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

Unity 3D相机视角无法保持,转动后立即回正问题求助

解决Unity视角环视后立刻复位的问题

你的代码核心问题是没有累积鼠标输入的旋转量,每次调用SetY时直接用新生成的旋转覆盖相机当前旋转,导致鼠标拖动后的旋转无法保留,一帧后相机就回到初始向前的状态。

修复代码如下:

using UnityEngine;

public class Look : MonoBehaviour
{
    public Transform player;
    public Transform cams;

    public float xSensitivity;
    public float ySensitivity;
    public float maxAngle = 80f;

    private float currentYRotation = 0f;
    
    void Update()
    {
        SetY();
    }

    void SetY()
    {
        float mouseYInput = Input.GetAxis("Mouse Y") * ySensitivity * Time.deltaTime;
        // 累积Y轴旋转量,反向是为了匹配鼠标拖动与视角旋转的常规交互逻辑
        currentYRotation -= mouseYInput;
        // 限制旋转角度,避免相机过度抬头/低头出现翻转
        currentYRotation = Mathf.Clamp(currentYRotation, -maxAngle, maxAngle);
        
        // 基于累积的角度设置相机局部旋转
        cams.localRotation = Quaternion.Euler(currentYRotation, 0f, 0f);
    }
}

关键修改点:

  • 新增currentYRotation变量存储当前Y轴旋转角度,实现旋转量的持续累积
  • 使用Mathf.Clamp限制旋转范围,符合FPS视角的常规交互逻辑
  • 直接通过欧拉角设置相机旋转,替代原来直接覆盖旋转的错误写法

额外提示:后续添加X轴旋转时,建议将X轴旋转应用到player对象上,相机保持跟随,这样玩家左右转和相机上下转的逻辑会更清晰。

内容的提问来源于stack exchange,提问作者Ivanoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:05:21