HasEligibleAttack() 只看攻击射程圆(远小于追击/视野区),脱离全部感知区在真实系统里 必然已脱离攻击射程,原顺序(attackInRange 先于 leftAllZones)本就正确。 FakeCombat.Eligible 是裸字段不会随 Chase/Vision 联动,才让上一版看似需要调边序。 改法:边序退回原样,测试里玩家离开感知区时手工同步清 Eligible,贴合真实耦合关系。
HasEligibleAttack() 只看攻击射程圆(远小于追击/视野区),脱离全部感知区在真实系统里 必然已脱离攻击射程,原顺序(attackInRange 先于 leftAllZones)本就正确。 FakeCombat.Eligible 是裸字段不会随 Chase/Vision 联动,才让上一版看似需要调边序。 改法:边序退回原样,测试里玩家离开感知区时手工同步清 Eligible,贴合真实耦合关系。