fix(enemy): 退回 Approach 边序——脱战优先属假件失真,改由测试贴合真实射程语义
HasEligibleAttack() 只看攻击射程圆(远小于追击/视野区),脱离全部感知区在真实系统里 必然已脱离攻击射程,原顺序(attackInRange 先于 leftAllZones)本就正确。 FakeCombat.Eligible 是裸字段不会随 Chase/Vision 联动,才让上一版看似需要调边序。 改法:边序退回原样,测试里玩家离开感知区时手工同步清 Eligible,贴合真实耦合关系。
This commit is contained in:
@@ -76,6 +76,9 @@ namespace BaseGames.Tests.EditMode.AI
|
||||
Assert.AreEqual(ApproachAttackEngagement.Attack, rt.CurrentStateName);
|
||||
|
||||
ctx.S.Chase = false; ctx.S.Vision = false; // 前摇中玩家跑掉
|
||||
// 真实系统里攻击射程远小于感知区,脱离全部感知区必然也脱离攻击射程,
|
||||
// HasEligibleAttack() 会随之变假。FakeCombat.Eligible 是裸字段不会联动,这里手工对齐。
|
||||
ctx.C.Eligible = false;
|
||||
rt.Tick(0.1f);
|
||||
Assert.AreEqual(ApproachAttackEngagement.Attack, rt.CurrentStateName); // 不中途收招
|
||||
|
||||
|
||||
Reference in New Issue
Block a user