Пример #1
0
 public override void process(KoboldSM fsm)
 {
     if (fsm.CheckView())
     {
         fsm.ChangeState(fsm.chaseState);
     }
 }
Пример #2
0
 public override void enter(KoboldSM fsm)
 {
     fsm.unit.Idle();
     fsm.anim.ChangeAnim(KoboldAnim.Attack);
     _attackDelay = 0;
     Debug.Log("Kobold Fight State start");
 }
Пример #3
0
        public override void process(KoboldSM fsm)
        {
            if (fsm.unit.HorizonSpeed == 0)
            {
                fsm.anim.SetSpeed(1);
                fsm.anim.ChangeAnim(KoboldAnim.Idle);
            }
            else
            {
                fsm.anim.SetSpeed(fsm.unit.HorizonSpeed / fsm.unit.stat.moveSpeed);
                fsm.anim.ChangeAnim(KoboldAnim.Run);
            }
            fsm.SetDirection(_targetPosition.x > fsm.transform.position.x);

            if (fsm.CheckAttackable())
            {
                fsm.ChangeState(fsm.fightState);
                return;
            }

            bool checkVeiw = fsm.CheckView();

            fsm.light.SetActive(checkVeiw);
            if (checkVeiw)
            {
                fsm.light.SetActive(true);
                _targetPosition = fsm.unit.Target.transform.position;
                _returning      = false;
                _returnTime     = 0;
            }

            fsm.unit.Move(_targetPosition.x > fsm.transform.position.x ? 1 : -1);

            if (fsm.unit.NotMovable)
            {
                _returnTime += Time.deltaTime;
            }

            if (Mathf.Abs(_targetPosition.x - fsm.transform.position.x) <= 0.1)
            {
                if (_returning)
                {
                    fsm.ChangeState(KoboldSM.idleState);
                }
                else
                {
                    fsm.unit.Idle();
                    _returnTime += Time.deltaTime;
                }
            }

            if (_returnTime > 5)
            {
                _returnTime = 0;
                Debug.Log("Kobold returning start");
                _targetPosition = _originalPosition;
                _returning      = true;
            }
        }
Пример #4
0
 public override void process(KoboldSM fsm)
 {
     _stunTime += Time.deltaTime;
     if (_stunTime >= 1.5)
     {
         fsm.ChangeState(KoboldSM.idleState);
     }
 }
Пример #5
0
 public override void enter(KoboldSM fsm)
 {
     //fsm.anim.ChangeAnim(KoboldAnim.Run);
     _targetPosition   = fsm.unit.Target.transform.position;
     _originalPosition = fsm.transform.position;
     _returnTime       = 0;
     _returning        = false;
     Debug.Log("Kobold Chase State start");
 }
Пример #6
0
        public override void enter(KoboldSM fsm)
        {
            if (Random.value > 0.5)
            {
                fsm.anim.ChangeAnim(KoboldAnim.Hit1);
            }
            else
            {
                fsm.anim.ChangeAnim(KoboldAnim.Hit2);
            }

            _stunTime = 0;
            Debug.Log("Kobold Damage State start");
        }
Пример #7
0
        public override void process(KoboldSM fsm)
        {
            _attackDelay += Time.deltaTime;
            if (_attackDelay > 3)
            {
                fsm.anim.ChangeAnim(KoboldAnim.Attack);
                _attackDelay = 0;
            }
            if (fsm.IsAttacked)
            {
                fsm.unit.Attack();
            }

            fsm.SetDirection(fsm.unit.Target.transform.position.x > fsm.transform.position.x);

            if (!fsm.CheckAttackable())
            {
                fsm.ChangeState(fsm.chaseState);
            }
        }
Пример #8
0
 private void Awake()
 {
     _koboldSM = GetComponentInParent <KoboldSM>();
     _anim     = GetComponentInParent <KoboldAnimCtrl>();
 }
Пример #9
0
 public override void exit(KoboldSM fsm)
 {
 }
Пример #10
0
 public override void process(KoboldSM fsm)
 {
 }
Пример #11
0
 public override void enter(KoboldSM fsm)
 {
     fsm.anim.ChangeAnim(KoboldAnim.Destroy);
     Debug.Log("Kobold Die State start");
 }
Пример #12
0
 public override void exit(KoboldSM fsm)
 {
     fsm.anim.SetSpeed(1);
 }
Пример #13
0
 public override void enter(KoboldSM fsm)
 {
     fsm.anim.ChangeAnim(KoboldAnim.Idle);
     fsm.unit.Idle();
     Debug.Log("Kobold Idle State start");
 }
Пример #14
0
 public abstract void exit(KoboldSM fsm);
Пример #15
0
 public abstract void process(KoboldSM fsm);
Пример #16
0
 public abstract void enter(KoboldSM fsm);