Example #1
0
 private void changeState(BasicRangeState nextState)
 {
     if (nextState == BasicRangeState.Meet)
     {
         fleeController.IsEnable = false;
     }
     else if (nextState == BasicRangeState.Escape)
     {
         fleeController.IsEnable = true;
         animator.Play("basic_range_move");
     }
     else if (nextState == BasicRangeState.Death)
     {
         fleeController.IsEnable = false;
         stateCounter = 0;
         animator.Play("basic_range_dead");
     }
     else if (nextState == BasicRangeState.Hurt)
     {
         fleeController.IsEnable = false;
         stateCounter = 0;
         attackCooldownCounter = 0;
         animator.Play("basic_range_hurt");
     }
     else
     {
         fleeController.IsEnable = false;
         animator.Play("basic_range_idle");
     }
     currentState = nextState;
 }
Example #2
0
 // Start is called before the first frame update
 void Start()
 {
     currentState = BasicRangeState.Idle;
     player = GameObject.FindGameObjectWithTag("Player");
     playerGridPosition = player.GetComponent<GridPosition>();
     playerHealth = player.GetComponent<PlayerHealth>();
     gridPosition = GetComponent<GridPosition>();
     aStar = GetComponent<AIPath>();
     attackCooldownCounter = 0;
     attackTimeCounter = 0;
     canAttack = false;
     fleeController = GetComponent<EnemyFleeController>();
     animator = GetComponentInChildren<Animator>();
     monsterHealth = GetComponent<MonsterHealth>();
     stateCounter = 0;
 }
Example #3
0
 private void StateMachineRunningPerFrame()
 {
     BasicRangeState nextState = BasicRangeState.Idle;
     if (currentState == BasicRangeState.Meet)
     {
         if (canAttack)
         {
             LinearBullet spawned = Instantiate<LinearBullet>(linearBullet);
             spawned.Setup(transform.position, player.transform.position, bulletVelocity, damage);
             canAttack = false;
         }
         if (!IsPlayerInMeetRange()) nextState = BasicRangeState.Idle;
         else if (IsPlayerInEscapeRange()) nextState = BasicRangeState.Escape;
         else nextState = BasicRangeState.Meet;
     }
     else if (currentState == BasicRangeState.Escape)
     {
         if (!IsPlayerInMeetRange()) nextState = BasicRangeState.Idle;
         else if (!IsPlayerInEscapeRange()) nextState = BasicRangeState.Meet;
         else nextState = BasicRangeState.Escape;
     }
     else if (currentState == BasicRangeState.Death)
     {
         if (stateCounter >= deathFrame)
         {
             nextState = BasicRangeState.Death;
             monsterHealth.Die();
         }
         else
         {
             stateCounter++;
             nextState = BasicRangeState.Death;
         }
     }
     else if (currentState == BasicRangeState.Hurt)
     {
         if (stateCounter >= hurtFrame)
         {
             nextState = BasicRangeState.Meet;
         }
         else
         {
             stateCounter++;
             nextState = BasicRangeState.Hurt;
         }
     }
     else
     {
         // Check if meet
         if (IsPlayerInMeetRange()) nextState = BasicRangeState.Meet;
         else nextState = BasicRangeState.Idle;
     }
     if (currentState != BasicRangeState.Hurt && monsterHealth.IsHurt)
     {
         nextState = BasicRangeState.Hurt;
     }
     if (currentState != BasicRangeState.Death && monsterHealth.IsDie)
     {
         nextState = BasicRangeState.Death;
     }
     if(nextState != currentState) changeState(nextState);
 }