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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:10:23