Files
zeling_v2/Assets/_Game/Scripts/Enemies/AIBrain/Ai/E001CaoZhiAi.cs
T

41 lines
1.4 KiB
C#

using BaseGames.AI;
namespace BaseGames.Enemies
{
/// <summary>
/// E001(草蛭)的 AI 定义:巡逻 → 追击(接触即伤害,无需攻击能力)→ 搜查 → 巡逻。
/// 数值目前用字面量常量;后续可外挂 SO 做热调。
/// </summary>
[AiDefinition("E001")]
public sealed class E001CaoZhiAi : AiScript
{
const float LoseTimeout = 2.5f; // 丢失玩家判定
const float SearchTime = 3f; // 搜查后返回巡逻
protected override void Build(BrainBuilder b)
{
b.Entry("Patrol");
// 死亡:全局事件,终止决策
b.Global().To("Dead").OnEvent(AiSignal.Died);
b.State("Patrol")
.Tick(c => c.Mover.WalkRandom())
.To("Chase").When(c => c.Sensor.SeesPlayer(), "SeesPlayer");
b.State("Chase")
.OnEnter(c => c.Mover.FacePlayer())
.Tick(c => c.Mover.MoveTo(c.Sensor.LastKnown)) // 冲向玩家,接触即由 BodyContactDamage 造成伤害
.To("Search").When(c => c.Sensor.LostFor(LoseTimeout), "LostFor");
b.State("Search")
.OnEnter(c => c.Mover.LookAround())
.To("Chase").When(c => c.Sensor.SeesPlayer(), "SeesPlayer")
.To("Patrol").After(SearchTime);
b.State("Dead")
.OnEnter(c => c.Mover.Stop());
}
}
}