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

Unity中Time.deltaTime与Input.GetAxis结合控制角色移动异常咨询

解决Input.GetAxis结合Time.deltaTime导致角色移动卡顿/缓慢的问题

嘿,我之前做2D角色控制的时候也踩过这个一模一样的坑!咱们来拆解一下问题到底出在哪,以及怎么解决:

首先得先搞清楚两个关键点的特性:

  • Input.GetAxis("Horizontal") 返回的是平滑后的输入值,范围在-1到1之间,它是每帧更新的,反映的是当前输入的强度(比如按住方向键时会从0平滑过渡到1)。
  • Time.deltaTime 是当前帧和上一帧之间的时间间隔,数值通常很小(比如60帧每秒的话大概是0.0167),用来让移动/动画等效果不受帧率波动影响,保证在不同设备上速度一致。

你遇到问题的核心原因

你大概率是犯了下面两个常见错误之一:

  1. 没有乘以移动速度基数
    如果直接写 velocity.x = Input.GetAxis("Horizontal") * Time.deltaTime,相当于把“输入强度”乘以“极小的时间间隔”,得到的数值会非常小——每帧只移动零点零几个单位,自然看起来几乎不动,而且帧率波动时这个数值的变化会导致卡顿。

  2. 在使用物理组件(比如Rigidbody2D)时错误添加了Time.deltaTime
    如果你是用Rigidbody2D来控制角色移动,rb.velocity 本身代表的是每秒的移动速度,Unity的物理引擎会自动处理时间相关的计算。这时候加Time.deltaTime,等于把速度缩成了“每帧的位移”,数值被大幅缩小,移动自然异常。

针对不同场景的正确写法

场景1:直接修改Transform(非物理驱动的移动)

这种情况下需要计算每帧的位移,必须结合移动速度和Time.deltaTime:

public float moveSpeed = 5f; // 可以在Inspector里调整的移动速度
private Vector2 velocity;

void Update()
{
    // 先计算每秒的速度(输入强度 × 移动速度)
    velocity.x = Input.GetAxis("Horizontal") * moveSpeed;
    velocity.y = Input.GetAxis("Vertical") * moveSpeed;
    
    // 再乘以Time.deltaTime得到每帧的位移,加到位置上
    transform.position += (Vector3)velocity * Time.deltaTime;
}

或者更简洁的写法:

void Update()
{
    float horizontalInput = Input.GetAxis("Horizontal");
    transform.Translate(horizontalInput * moveSpeed * Time.deltaTime, 0, 0);
}

场景2:使用Rigidbody2D(物理驱动的移动)

这种情况下不要加Time.deltaTime,直接给velocity赋值每秒的速度即可:

public float moveSpeed = 5f;
private Rigidbody2D rb;

void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

void FixedUpdate()
{
    float horizontalInput = Input.GetAxis("Horizontal");
    // 保持Y轴的原有速度(比如跳跃的重力加速度),只修改X轴
    rb.velocity = new Vector2(horizontalInput * moveSpeed, rb.velocity.y);
}

注意这里用FixedUpdate而不是Update,因为物理相关的逻辑在FixedUpdate里执行更稳定。

额外小贴士

如果觉得Input.GetAxis的平滑效果太明显,想要更灵敏的响应,可以换成Input.GetAxisRaw,它会直接返回-1、0、1的整数值,没有平滑过渡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:04:56