Пример #1
0
    public override void Act(EnemyStateData data)
    {
        float direction = data.enemyMovementController.ChaseTarget(data.currentTarget);

        data.anim.SetBool("Walking", true);
        data.anim.SetBool("FacingRight", direction > 0);
    }
Пример #2
0
 public override bool Decide(EnemyStateData data)
 {
     Collider2D[] colliders = new Collider2D[1];
     if (data.scanningCollider.OverlapCollider(data.cf2d, colliders) > 0)
     {
         data.currentTarget = colliders[0].transform;
         return(true);
     }
     return(false);
 }
Пример #3
0
    public override void Act(EnemyStateData data)
    {
        var soldiers = data.Soldiers;

        //有战士追战士,没战士追目标
        if (soldiers != null && soldiers.Count > 0)
        {
            base.Character.Chase(soldiers.First().Position);
        }
        else
        {
            base.Character.Chase(targetPos);
        }
    }
    public override void Reason(EnemyStateData data)
    {
        var soldiers = data.Soldiers;

        //判断有无战士
        if (soldiers == null || soldiers.Count <= 0)
        {
            System.PerformTransition(EnemyTransition.LostSoldier);
        }
        //判断是否在攻击范围内
        else if (Vector3.Distance(base.Character.Position, soldiers.First().Position) > base.Character.AtkRange)
        {
            base.System.PerformTransition(EnemyTransition.LostSoldier);
        }
    }
    public override void Act(EnemyStateData data)
    {
        //判断有无战士
        var soldiers = data.Soldiers;

        if (soldiers == null || soldiers.Count <= 0)
        {
            return;
        }

        //有战士,攻击第一个
        timer -= Time.deltaTime;
        if (timer > 0)
        {
            return;
        }
        base.Character.Attack(soldiers.First());
        timer = intervel;
    }
 public void Act(EnemyStateData data)
 {
     currentState.Act(data);
 }
 public void Reason(EnemyStateData data)
 {
     currentState.Reason(data);
 }
 //当前状态的表现,即在当前状态下要做的具体实现,由系统提供生命周期
 public abstract void Act(EnemyStateData data);
 //状态内部实现状态转换条件的检测,并最终调用系统的PerformTransition方法,进行状态转换,由系统提供生命周期
 public abstract void Reason(EnemyStateData data);
Пример #10
0
 public override void Act(EnemyStateData data)
 {
     data.anim.SetBool("Walking", false);
 }
Пример #11
0
 public void UpdateFSM(EnemyStateData data)
 {
     Fsm.Reason(data);
     Fsm.Act(data);
 }