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

Unity中如何实现带动量惯性的敌人追踪玩家移动效果

实现带动量惯性的2D敌人追踪移动

核心逻辑很简单:不要每帧直接将敌人的移动方向瞬间设为朝向玩家,而是让敌人的当前移动速度逐帧向「朝向玩家的目标速度」平滑过渡,通过控制过渡速率模拟惯性和转向延迟。你之前写的脚本相当于把速度过渡速率拉到了无限大,自然会出现瞬间转向、无法风筝的问题。

水蛭敌人移动行为演示

最稳的实现方式(无复杂物理、移动端性能友好)

不需要依赖复杂的物理力计算,直接维护敌人的当前速度变量做插值即可,手感完全可控:

  • 每帧计算朝向玩家的目标速度向量
  • 让当前实际速度以固定的加速度向目标速度靠近,加速度越小,惯性越强、转向越慢
  • 用最终的实际速度驱动敌人移动

可直接复用的脚本代码

using UnityEngine;

public class LeechEnemy : MonoBehaviour
{
    [Header("追踪参数")]
    public Transform targetPlayer;
    // 敌人最大移动速度,保持你之前设定的较快数值即可
    public float maxSpeed = 6.5f;
    // 核心手感参数:速度变化的加速度,数值越小转向越慢、惯性越强
    public float acceleration = 13f;
    
    // 存储敌人当前的实际移动速度
    private Vector2 _currentMoveVelocity;

    private void FixedUpdate()
    {
        if (targetPlayer == null) return;

        // 1. 计算朝向玩家的目标速度
        Vector2 toPlayerDir = (targetPlayer.position - transform.position).normalized;
        Vector2 targetVelocity = toPlayerDir * maxSpeed;

        // 2. 当前速度逐帧向目标速度过渡,模拟动量累积效果
        _currentMoveVelocity = Vector2.MoveTowards(
            _currentMoveVelocity,
            targetVelocity,
            acceleration * Time.fixedDeltaTime
        );

        // 3. 驱动移动
        transform.position += (Vector3)_currentMoveVelocity * Time.fixedDeltaTime;

        // 可选优化:让敌人朝向和当前移动方向一致,不要直接锁玩家,视觉上更符合惯性逻辑
        if (_currentMoveVelocity.sqrMagnitude > 0.01f)
        {
            transform.up = _currentMoveVelocity;
        }
    }
}

如果你已经用了Rigidbody2D做碰撞

只需要把脚本里的移动逻辑替换成刚体移动即可,其余逻辑完全不变:

  • 把Rigidbody2D的重力缩放设为0,冻结Z轴旋转,避免碰撞时出现乱转
  • 移动代码替换为:
private Rigidbody2D _rb;
private void Awake()
{
    _rb = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
    // 前面算_currentMoveVelocity的逻辑保持不变
    _rb.MovePosition(_rb.position + _currentMoveVelocity * Time.fixedDeltaTime);
}

调参参考

  • 初始可以把acceleration设为10-15区间,这个区间下敌人移动速度快,但转向有明显拖滞,玩家可以靠走位骗它冲过头完成闪避
  • 如果觉得敌人太笨追不上人,适当调大acceleration;如果还是太灵敏能瞬间转向,就把数值调小
  • 所有逻辑放在FixedUpdate里执行,乘对应deltaTime,保证不同帧率下手感一致,不会出现高帧率下移动变快的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:06:34