Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
#if UNITY_EDITOR
        current = _sm.currentState;
#endif

        if (Disarmed)
        {
            if (_currentDisarmedTime > 0)
            {
                _currentDisarmedTime -= Time.deltaTime;
            }
            else if (_currentDisarmedTime <= 0)
            {
                Disarmed = false;
                _sm.Feed(ShieldEnemyStates.think);
            }
        }

        //Condición de muerte, Update de Sight, FSM y Rotación.
        if (IsAlive)
        {
            sight.Update();

            if (LookTowardsPlayer && _targetDetected)
            {
                transform.forward = Vector3.Lerp(transform.forward, sight.dirToTarget, _rotationLerpSpeed * Time.deltaTime);
            }

            _sm.Update();
        }
        else if (_sm.currentState != ShieldEnemyStates.dead)
        {
            _sm.Feed(ShieldEnemyStates.dead);
        }
    }
Ejemplo n.º 2
0
 public void SetState(ShieldEnemyStates nextState)
 {
     _sm.Feed(nextState);
 }