Esempio n. 1
0
    void Update()
    {
        UpdateNextState();

        if (currentState == null)
        {
            return;
        }

        stateTime += Time.deltaTime;
        if (currentState.totalTime <= stateTime)
        {
            if (currentState.nextState != null)
            {
                SetNextState(currentState.nextState, true);
                UpdateNextState();
            }
            else
            {
                currentState.End();
                currentState = null;
            }
        }
        else
        {
            float progress = 1;
            if (currentState.totalTime > 0)
            {
                progress = stateTime / currentState.totalTime;
            }
            currentState.Update(progress);
            if (currentState.hitTime >= 0 && currentState.hitTime < currentState.totalTime - stateTime)
            {
                currentState.hitTime = -1;
                currentState.Hit();
            }
        }
    }