敌人追踪

This commit is contained in:
tianmo committed 2026-10-14 19:33:29 +08:00
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)