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
相关产品推荐
相关产品推荐

