从 PerceptionStateMachine 的 private static 辅助方法提升为公开原语,供后续 模块化重构(骨架+可插拔模块)与定制 AiScript 复用。新增 AbilityOnce: 只在进入时触发能力、不每帧重触发,修复用 Ability() 驱动死亡态时演出播完 被 Tick 无限重播的隐患(现有 PerceptionStateMachine 因 E001 死亡能力 id 为空未暴露,本次不改它,留待 T11 整体退役)。
22 lines
998 B
C#
22 lines
998 B
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using BaseGames.AI;
|
|
|
|
namespace BaseGames.Tests.EditMode.AI
|
|
{
|
|
public sealed class FakeLocomotion : IEnemyLocomotion
|
|
{
|
|
public List<string> Calls = new List<string>();
|
|
public LocomotionMode CurrentMode { get; private set; }
|
|
public bool IsMoving { get; set; }
|
|
public void SetMode(LocomotionMode mode) { CurrentMode = mode; Calls.Add("SetMode:" + mode); }
|
|
public void Approach(Transform t) { CurrentMode = LocomotionMode.Approach; Calls.Add("Approach"); }
|
|
public Vector2 PursuedTo;
|
|
public void Pursue(Vector2 p) { PursuedTo = p; CurrentMode = LocomotionMode.Approach; Calls.Add("Pursue"); }
|
|
public void MoveTo(Vector2 p) { Calls.Add("MoveTo"); }
|
|
public Vector2 FacedAt;
|
|
public void Face(Vector2 p) { FacedAt = p; CurrentMode = LocomotionMode.Face; Calls.Add("Face"); }
|
|
public void Stop() { CurrentMode = LocomotionMode.Idle; Calls.Add("Stop"); }
|
|
}
|
|
}
|