敌人追踪
This commit is contained in:
1 parent
e839c158ac
commit
1aeaebcddb
17 files changed
+297
-2365
No files matched your search
@@ -3,8 +3,9 @@ using UnityEngine;
|
||||
/// <summary>
|
||||
/// 敌人追踪:朝目标(玩家)移动,进入销毁半径后自我销毁。
|
||||
///
|
||||
/// 目标引用在 Inspector / 预制体实例里接好——预制体资产本身存不下场景对象,
|
||||
/// 所以每个场景实例各自接一次;代码里不按名字 / 标签查找节点。
|
||||
/// 目标来源两种:场景里手摆的敌人在 Inspector / 预制体实例里接好(预制体资产本身存不下场景对象,
|
||||
/// 所以每个场景实例各自接一次);运行时生成的敌人由生成方(PrefabSpawner)在 Instantiate 之后
|
||||
/// 调 SetTarget 传进来。代码里不按名字 / 标签查找节点。
|
||||
/// 移动直接改 transform,不依赖 CharacterController / Rigidbody,只在水平面内走,
|
||||
/// 高度保持不变。
|
||||
///
|
||||
@@ -56,13 +57,25 @@ public class EnemyChaseController : MonoBehaviour
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (target == null)
|
||||
Debug.LogError("[EnemyChaseController] 没有指定追踪目标(target),请在 Inspector / 预制体实例里拖入玩家。", this);
|
||||
|
||||
if (animator == null)
|
||||
Debug.LogError("[EnemyChaseController] 没有指定 Animator(animator),死亡动画不会播。", this);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// 放在 Start 而不是 Awake:敌人是 Instantiate 出来的,生成方在实例化之后才调 SetTarget,
|
||||
// 而 Instantiate 会立刻跑 Awake,那时目标还没递进来。
|
||||
if (target == null)
|
||||
Debug.LogError("[EnemyChaseController] 没有追踪目标(target):请在 Inspector / 预制体实例里拖入玩家," +
|
||||
"或由生成方(PrefabSpawner)在实例化后调 SetTarget 传入。", this);
|
||||
}
|
||||
|
||||
/// <summary>由生成方在实例化之后调用,把追踪目标接进来;场景里手摆的敌人直接在 Inspector 接。</summary>
|
||||
public void SetTarget(Transform value)
|
||||
{
|
||||
target = value;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_dying)
|
||||
|
||||
Reference in new issue
Block a user