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

Unity 2D(C#):实现兼具跟随玩家与环绕飘动的AI

实现慵懒飘动的跟随效果

嘿,作为编程爱好者能自己写出基础跟随脚本已经超棒啦!你现在的代码已经搞定了平滑跟随的核心逻辑,要让这个类似娜薇的角色拥有慵懒飘动的质感,只需要在原有逻辑上叠加一些平滑、随机的动态偏移就行——用Perlin噪声模拟这种自然飘动的感觉最合适不过,下面是修改后的完整代码:

public class WillOWispFollowPlayer : MonoBehaviour 
{
    public Transform target;
    public float smoothSpeed = 0.05f;
    public Vector3 offset;
    // 新增控制飘动的参数
    public float floatAmplitude = 0.2f; // 飘动幅度,值越大飘得越远
    public float floatSpeed = 0.5f; // 飘动速度,值越小越慵懒
    private float randomSeedX;
    private float randomSeedY;

    private void Start()
    {
        // 初始化随机种子,让每个精灵的飘动节奏独一无二
        randomSeedX = Random.Range(0f, 1000f);
        randomSeedY = Random.Range(0f, 1000f);
    }

    private void FixedUpdate() 
    {
        // 用Perlin噪声生成平滑随机的飘动偏移
        Vector3 floatOffset = new Vector3(
            Mathf.PerlinNoise(Time.time * floatSpeed, randomSeedX) * floatAmplitude - floatAmplitude/2,
            Mathf.PerlinNoise(Time.time * floatSpeed, randomSeedY) * floatAmplitude - floatAmplitude/2,
            0f // 横版游戏保持Z轴不变即可
        );

        // 把飘动偏移叠加到原有目标位置上
        Vector3 desiredPosition = target.position + offset + floatOffset;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
        transform.position = smoothedPosition;
    }
}

关键细节说明:

  • Perlin噪声的优势:它生成的是连续平滑的随机值,不会出现突兀的跳动,完美还原自然飘动的慵懒感,比单纯的正弦函数更贴近真实的“晃悠”效果。
  • 随机种子的作用:初始化时给X、Y轴设置不同的随机种子,能让每个精灵的飘动节奏都不一样,避免所有同类角色都飘成一个模子。
  • 参数调整技巧:你可以根据游戏风格微调这些值:
    • 调小floatSpeed会让飘动更慢,更符合“慵懒”的设定;
    • 增大floatAmplitude会让角色飘得更远,反之则更贴近玩家;
    • smoothSpeed保持原有数值即可,它负责控制角色跟随玩家的顺滑程度。

如果想要更贴近娜薇那种偶尔“停顿晃悠”的感觉,还可以额外加个小逻辑:比如随机间隔让角色短暂停留在某个偏移位置,但上面的代码已经能满足基础的慵懒飘动需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:17:56