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
相关产品推荐
相关产品推荐

