Unity相机出现异常跳动问题求助(附CameraMovement脚本)
解决Unity相机奇怪跳动、移动操作困难的问题
你的相机跳动问题核心是错误地将Input.GetAxisRaw("Mouse X/Y")与Time.deltaTime相乘。GetAxisRaw返回的是当前帧内鼠标的绝对移动增量,并非每秒移动速率,乘以Time.deltaTime会让灵敏度随帧率波动:帧率高时deltaTime小,移动量被缩小;帧率低时deltaTime大,移动量被放大,最终导致相机跳动。
修改后的CameraMovement脚本
直接移除Time.deltaTime的乘法即可解决核心问题,同时补上killSwitch的逻辑(原脚本中未使用该变量):
public class CameraMovement : MonoBehaviour { public float sensX; public float sensY; public bool killSwitch; public Transform orientation; float yRotation; float xRotation; void Start() { Cursor.lockState = CursorLockMode.Locked; } private void Update() { if (killSwitch) return; float mouseX = Input.GetAxisRaw("Mouse X") * sensX; float mouseY = Input.GetAxisRaw("Mouse Y") * sensY; yRotation += mouseX; xRotation -= mouseY; xRotation = Mathf.Clamp(xRotation, -90f, 90f); transform.rotation = Quaternion.Euler(xRotation, yRotation, 0); orientation.rotation = Quaternion.Euler(0, yRotation, 0); } }
额外排查点
如果修改后仍有问题,可以检查以下几点:
- 调整
sensX和sensY的数值,建议从100左右开始测试,避免数值过大导致的抖动 - 确认
orientation引用的对象没有被其他脚本修改旋转属性 - 检查Unity输入设置(Edit > Project Settings > Input Manager),将Mouse X/Y的Dead值设为0,Sensitivity设为1(脚本内已单独控制灵敏度)
- 排查最近是否修改过项目帧率设置(如从固定帧率改为可变),或添加了其他影响相机的组件
内容的提问来源于stack exchange,提问作者Sunnit
相关产品推荐
相关产品推荐

