// Update is called in-step with the physics engine void FixedUpdate() { if (enemyState == EnemyState.Dead) { // If death animation over if (enemyAnimator.IsAnimationOver() && !hasDeadBody) { // Destroy Destroy(gameObject); } return; } if (healthSystem.IsDead()) { Destroy(tempEffect); AImoveH = 0; enemyAnimator.PlayDeath(); enemyState = EnemyState.Dead; return; } if (enemyState == EnemyState.Stunned) { HandleStun(); return; } if (isSlowed && Time.timeSinceLevelLoad > slowEndTime) { CancelSlowEffect(); } distToTargetX = gameManager.GetObjectivePositionX() - transform.position.x; absDistToTargetX = Mathf.Abs(distToTargetX); AI(); if (enemyState == EnemyState.Run) { HandleRunning(); } else if (enemyState == EnemyState.AttackingObjective) { HandleAttacking(false); } else if (enemyState == EnemyState.AttackingPlayer) { HandleAttacking(true); } else if (enemyState == EnemyState.Idle) { // Do nothing } }