示例#1
0
 // Update is called once per frame
 void Update()
 {
     if (_previousPlayerMovementState != PlayerMovement.MovementState.Dash && _playerMovementReference.CurrentState == PlayerMovement.MovementState.Dash)
     {
         StopAllCoroutines();
         StartCoroutine(FillEnumerator());
     }
     _previousPlayerMovementState = _playerMovementReference.CurrentState;
 }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        if (_playerMovementRef != null)
        {
            // do sprite changing stuff
            if (_lastMovementState != _playerMovementRef.CurrentState)
            {
                StopAllCoroutines();

                SpriteRenderer _previousActiveSprite = _activeSprite;
                switch (_playerMovementRef.CurrentState)
                {
                case PlayerMovement.MovementState.Idle:
                    _activeSprite = _idleSpriteRef;
                    break;

                case PlayerMovement.MovementState.Move:
                    _activeSprite = _moveSpriteRef;
                    break;

                case PlayerMovement.MovementState.Dash:
                    _activeSprite = _dashSpriteRef;
                    break;
                }

                if (_lastMovementState == PlayerMovement.MovementState.Idle || _playerMovementRef.CurrentState == PlayerMovement.MovementState.Idle)
                {
                    StartCoroutine(SpriteTransition(_previousActiveSprite, _activeSprite, _transitionDuration));
                }

                _lastMovementState = _playerMovementRef.CurrentState;
            }

            if (_playerMovementRef.CurrentMovement.sqrMagnitude > 0)
            {
                _activeSprite.transform.up = Vector3.Lerp(_activeSprite.transform.up, -_playerMovementRef.CurrentMovement.normalized, 0.8f);
            }
        }
    }