//OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (isDead == true) { return; } if (EnemyBase.health <= 0.0f) { KillEnemy(animator); isDead = true; return; } if (KillPlayer() == false) { EnemyAgent.isStopped = true; animator.SetBool("isIdle", true); animator.SetBool("isChasing", false); return; } if (EnemyBase.isHit == true) { animator.Play("KnockBack"); //animator.SetBool( "isChasing", false ); //animator.SetBool( "isKnocked", true ); EnemyBase.isHit = false; return; } if (SeePlayer() == false || Vector3.Distance(Enemy.transform.position, Player.transform.position) > EnemyBase.EnemyDistance + 1.0f) { EnemyAgent.isStopped = false; EnemyAgent.destination = Player.transform.position; EnemyAgent.speed = EnemyBase.runspeed; return; } if (Vector3.Distance(Enemy.transform.position, Player.transform.position) > EnemyBase.EnemyDistance - 1.0f && Vector3.Distance(Enemy.transform.position, Player.transform.position) < EnemyBase.EnemyDistance + 1.0f) { EnemyAgent.speed = 3.0f; EnemyAgent.isStopped = true; animator.SetBool("isChasing", false); animator.SetBool("isAttacking", true); return; } if (Vector3.Distance(Enemy.transform.position, Player.transform.position) < EnemyBase.EnemyDistance + 1.0f) { myRay.origin = Player.transform.position; myRay.direction = Enemy.transform.position - Player.transform.position; EnemyRay.origin = new Vector3(Enemy.transform.position.x, 1.0f, Enemy.transform.position.z); EnemyRay.direction = myRay.GetPoint(EnemyBase.EnemyDistance) - Enemy.transform.position; if (Vector3.Distance(Enemy.transform.position, Player.transform.position) < EnemyBase.EnemyDistance - 1.0f && SeePlayer() == true) { RaycastHit hit; if (Physics.Raycast(EnemyRay, out hit, 5.0f) == true) { if (hit.transform.gameObject.CompareTag("Wall") == true || hit.transform.gameObject.CompareTag("ExtraTagForEnemies") == true) { EnemyAgent.speed = 3.0f; EnemyAgent.isStopped = true; animator.SetBool("isChasing", false); animator.SetBool("isAttacking", true); return; } } EnemyAgent.SetDestination(myRay.GetPoint(EnemyBase.EnemyDistance)); EnemyAgent.speed = EnemyBase.runspeed; EnemyAgent.angularSpeed = 720.0f; EnemyAgent.isStopped = false; } } }