feat(ai): E001(草蛭) AiScript 定义——巡逻/追击/搜查(接触伤害杂兵)
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d0934d78d9f1fe34aa6c0429a0822df8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 82a595c9b77505c448845d8cd1a56064
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Reference in New Issue
Block a user