public override void Reason(SoldierStateData data) { var enemies = data.Enemies; if (enemies != null && enemies.Count > 0) { System.PerformTransition(SoldierTransition.SeeEnemy); } }
public override void Act(SoldierStateData data) { var enemies = data.Enemies; if (enemies != null && enemies.Count > 0) { base.Character.Chase(enemies.First().Position); } }
public override void Reason(SoldierStateData data) { var enemies = data.Enemies; if (enemies == null || enemies.Count <= 0) { System.PerformTransition(SoldierTransition.NoEnemy); return; } float dis = Vector3.Distance(enemies.First().Position, Character.Position); if (dis <= Character.AtkRange) { System.PerformTransition(SoldierTransition.CanAttack); } }
public override void Act(SoldierStateData data) { var enemies = data.Enemies; if (enemies == null || enemies.Count <= 0) { return; } timer -= Time.deltaTime; if (timer > 0) { return; } base.Character.Attack(enemies.First()); timer = intervel; }
public override void Act(SoldierStateData data) { base.Character.PlayAni("stand"); }
public void Act(SoldierStateData data) { currentState.Act(data); }
public void Reason(SoldierStateData data) { currentState.Reason(data); }
//当前状态的表现,即在当前状态下要做的具体实现,由系统提供生命周期 public abstract void Act(SoldierStateData data);
//状态内部实现状态转换条件的检测,并最终调用系统的PerformTransition方法,进行状态转换,由系统提供生命周期 public abstract void Reason(SoldierStateData data);
public void UpdateFSM(SoldierStateData data) { Fsm.Reason(data); Fsm.Act(data); }