Files
zeling_v2/Assets/Tests/EditMode/AI/Fakes/FakeLocomotion.cs
T
joywayer 77a32cbf8a feat(enemy): AiStateFragments 建态原语,新增 AbilityOnce 修死亡态重触发隐患
从 PerceptionStateMachine 的 private static 辅助方法提升为公开原语,供后续
模块化重构(骨架+可插拔模块)与定制 AiScript 复用。新增 AbilityOnce:
只在进入时触发能力、不每帧重触发,修复用 Ability() 驱动死亡态时演出播完
被 Tick 无限重播的隐患(现有 PerceptionStateMachine 因 E001 死亡能力 id
为空未暴露,本次不改它,留待 T11 整体退役)。
2026-07-29 11:35:47 +08:00

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"); }
}
}