public override void Reason(SoldierStateData data)
    {
        var enemies = data.Enemies;

        if (enemies != null && enemies.Count > 0)
        {
            System.PerformTransition(SoldierTransition.SeeEnemy);
        }
    }
예제 #2
0
    public override void Act(SoldierStateData data)
    {
        var enemies = data.Enemies;

        if (enemies != null && enemies.Count > 0)
        {
            base.Character.Chase(enemies.First().Position);
        }
    }
예제 #3
0
    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);
예제 #10
0
 public void UpdateFSM(SoldierStateData data)
 {
     Fsm.Reason(data);
     Fsm.Act(data);
 }