public override void LogicUpdate()
    {
        base.LogicUpdate();
        if (isExitingState)
        {
            return;
        }

        if (_jumpInput && _isHolding && IsGrounded)
        {
            SwordCharacter.RB.drag = 0;
            SwordCharacter.SetVelocityAngular(SwordCharacterData.DashJumpVelocity, SwordCharacterData.DashJumpAngle, SwordCharacter.FacingDirection);
        }

        if (_isHolding && IsGrounded)
        {
            _dashInputStop = SwordCharacter.InputHandler.DashInputStop;
            if (_dashInputStop)
            {
                _isHolding = false;
            }
            SwordCharacter.RB.drag = SwordCharacterData.Drag;
            SwordCharacter.CheckIfShouldFlip(XInput);
            SwordCharacter.SetVelocityX(SwordCharacterData.DashVelocity * SwordCharacter.FacingDirection);
        }

        if (!_isHolding || !IsGrounded || Time.time >= startTime + SwordCharacterData.DashTimeDistance)
        {
            SwordCharacter.RB.drag = 0;
            IsAbilityDone          = true;
            _lastDashTime          = Time.time;
        }
    }
示例#2
0
 public override void Enter()
 {
     base.Enter();
     SwordCharacter.InputHandler.JumpButtonUsed();
     SwordCharacter.JumpState.ResetAmountOfJumpsLeft();
     SwordCharacter.SetVelocityAngular(SwordCharacterData.WallJumpVelocity, SwordCharacterData.WallJumpAngle, _wallJumpDirection);
     SwordCharacter.CheckIfShouldFlip(_wallJumpDirection);
     SwordCharacter.JumpState.DecreaseAmountOfJumpsLeft();
 }