U
Unity
星辰学院
首页
课程表
章节导览
第 1 课
返回主站
首页
/
第 15 章 · 寻路与导航
/
第 259 课
LESSON 259 · 寻路与导航
玩家跟随与 AI 伙伴
AI 伙伴完成。下一课寻路章综合练习。
⏱ 约 14 分钟
📊 难度:
入门
🗂 第 15 章 · 寻路与导航
📍 第 259 / 300 课
课程进度
259 / 300
🎯
本节学习目标
实现跟随玩家
实现保持距离
实现协作攻击
🚀
课程导读
“带个小弟”——AI 伙伴跟随、保持距离、帮忙打怪。本课实现。
◆
跟随玩家
小弟“跟班”。
【脚本 Follower】
public Transform leader; // 玩家
public float followDistance = 2f;
public float stopDistance = 1.5f;
private NavMeshAgent agent;
void Start() { agent = GetComponent<NavMeshAgent>(); }
void Update() {
float dist = Vector3.Distance(transform.position, leader.position);
if (dist > stopDistance) {
// 在玩家身后找目标点(保持跟随距离)
Vector3 toLeader = (transform.position - leader.position).normalized;
Vector3 target = leader.position + toLeader * followDistance;
agent.SetDestination(target);
} else {
agent.isStopped = true;
}
}
【说明】目标点 = 玩家位置 + 指向自己的方向×跟随距离(站在身后)。
【距离】玩家走远就追、近了就停。
【避让】agent 自动避让玩家与障碍。
【测试】玩家移动,伙伴跟随保持距离。
【完成】“跟班”上线!
💡
跟随 = 目标点 = 玩家 + 反方向偏移×距离。三行实现“站身后”。
◆
协作攻击
帮你“打怪”。
【目标识别】伙伴发现敌人:
public float detectRange = 8f;
Enemy FindTarget() {
// 找最近的敌人(Physics.OverlapSphere + 距离比较)
}
【攻击】发现敌人 → 追击 → 攻击(第 258 课敌人逻辑复用)。
【协作】多个伙伴打同一目标(各自攻击,目标共享)。
【切换】目标死亡后重新找。
【实现】复用“敌人 AI”逻辑给伙伴(加“跟随/攻击”状态)。
【状态机】伙伴状态:Follow(跟随)、Combat(战斗)、Idle。
【跟随优先级】玩家遇敌 → 伙伴进 Combat;无敌人 → Follow。
【测试】玩家打怪,伙伴自动帮忙。
【完成】“好队友”上线!
【注意】别让伙伴和玩家抢一个点(目标偏移,第 257 课)。
【进阶】伙伴指令(跟随/攻击/待命)。
✅
AI 伙伴 = 跟随(状态)+ 战斗(复用敌人逻辑)+ 切换(玩家遇敌转战斗)。
⚠
常见错误与排查
⛔
错误:
伙伴挡路/挤玩家?
原因:
跟随目标点太近
解决:
加大 followDistance;给目标加偏移;agent 半径配合。
★
动手练习
课后小任务(做出来才算真的学会)
实现伙伴跟随与保持距离
实现伙伴发现敌人攻击
做跟随/战斗状态切换
✓
本节小结
AI 伙伴完成。下一课寻路章综合练习。
标记为已完成
完成打卡后,主站会实时更新你的学习进度 🎯
← 上一课
导航与动画整合
下一课 →
寻路综合练习:AI 追逐与逃脱
↑