Пример #1
0
 public override void OnExcuteWithEvent(OrdinaryEnemyTop fsm)
 {
     fsm.Velocity = Vector2.zero;
     if (fsm.ChaseProcess())
     {
         return;
     }
     if (!fsm.InRadius(0.2f))
     {
         fsm.ChangeState <ReturnState>(null);
     }
 }
Пример #2
0
        public override void OnExcuteWithEvent(OrdinaryEnemyTop fsm)
        {
            if (fsm.ChaseProcess())
            {
                return;
            }
            if (path.Finished)
            {
                fsm.ChangeState <HomeState>(null);
                return;
            }
            Vector2 dir   = path.GetDir();
            float   dis   = (fsm.mov.Position - fsm.originPos).magnitude;
            float   speed = fsm.returnDistanceSpeedCurve.Evaluate(dis);

            fsm.mov.Velocity = dir.normalized * speed;
        }
Пример #3
0
 public OrdinaryEnemyChase(OrdinaryEnemyTop top, ChaseState chaseState)
 {
     this.top        = top;
     this.chaseState = chaseState;
 }
Пример #4
0
 public override void OnExitWithEvent(OrdinaryEnemyTop fsm)
 {
     fsm.chase = null;
 }
Пример #5
0
 public override void OnExcuteWithEvent(OrdinaryEnemyTop fsm)
 {
     fsm.chase.Update();
 }
Пример #6
0
 public override void OnEnterWithEvent(OrdinaryEnemyTop fsm)
 {
     fsm.chase = new OrdinaryEnemyChase(fsm, this);
     fsm.chase.ChangeState <OrdinaryEnemyChase.SlowState>(null);
 }
Пример #7
0
 public override void OnEnterWithEvent(OrdinaryEnemyTop fsm)
 {
     nevMap = fsm.returnNevMap;
     path   = nevMap.CreatePath(() => fsm.mov.Position, fsm.originPos);
 }