Пример #1
0
    // 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
        }
    }