首页/ 第 7 章 · 物理系统/ 第 107 课
LESSON 107 · 物理系统

物体跟随与注视(Follow & LookAt)

跟随与注视已掌握。下一课深入摩擦与弹性应用。

⏱ 约 14 分钟📊 难度:入门🗂 第 7 章 · 物理系统📍 第 107 / 300 课
课程进度
107 / 300

🎯本节学习目标

  • 实现物体跟随
  • 实现平滑跟随
  • 实现注视目标

🚀课程导读

“相机跟着主角”“无人机盯着敌人”——本课实现跟随与注视这两大基础行为。

跟随目标

让 A 跟着 B。

  1. 【硬跟随】每帧把位置设为目标位置:transform.position = target.position;(会瞬移、抖动)。
  2. 【平滑跟随】用 Lerp 插值:transform.position = Vector3.Lerp(transform.position, target.position, speed * Time.deltaTime);
  3. speed 越大跟得越紧,越小越“迟钝”。
  4. 【保持偏移】相机通常跟在主角“后上方”:transform.position = Vector3.Lerp(transform.position, target.position + offset, speed * Time.deltaTime);
  5. offset 如 new Vector3(0, 2, -4)(主角后上方 4 米)。
  6. 【匀速跟随】用 MoveTowards:transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime); 匀速不拖尾。
  7. 【延迟跟随】记录一个队列实现“蛇形跟随”(进阶)。
💡
Lerp 适合“软跟”(相机、追踪弹),MoveTowards 适合“硬跟”(敌人追击)。

注视目标

让 A 面向 B。

  1. 【直接注视】transform.LookAt(target); 让对象正面(Z 轴)朝向目标。
  2. 【平滑注视】用 Slerp 插值旋转:
  3. Quaternion targetRot = Quaternion.LookRotation(target.position - transform.position);
  4. transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, speed * Time.deltaTime);
  5. 【只水平注视】(角色只转身体不抬头):把目标位置的 Y 改成与自己相同再 LookAt。
  6. 【面向移动方向】移动时先 LookAt 移动方向。
  7. 【相机注视】相机看向玩家:camera.LookAt(player)。
  8. 【应用】炮塔瞄准、怪物面向玩家、相机跟随、无人机。
  9. 【注意】LookAt 会立即旋转;平滑版用 Slerp 过渡。
组合拳:LookRotation(算朝向)+ Slerp(平滑旋转)是“转身动画”级的基础。

常见错误与排查

错误:跟随物体抖动?
原因:直接用 position 硬跟或插值过快
解决:插值放 LateUpdate(第 71 课,相机用 LateUpdate 在角色移动后更新);降低速度。

动手练习

课后小任务(做出来才算真的学会)

  • 实现相机平滑跟随主角(带偏移)
  • 实现一个始终看向玩家的炮塔
  • 实现敌人追击玩家(跟随+注视)

本节小结

跟随与注视已掌握。下一课深入摩擦与弹性应用。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课移动平台与传送带