public override void LogicUpdate() { base.LogicUpdate(); if (isExitingState) { return; } SwordCharacter.Anim.SetFloat("yVelocity", SwordCharacter.CurrentVelocity.y); SwordCharacter.Anim.SetFloat("xVelocity", Mathf.Abs(SwordCharacter.CurrentVelocity.x)); if (_isHolding) { _airDashDirectionInput = SwordCharacter.InputHandler.DashDirectionInput; _dashInputStop = SwordCharacter.InputHandler.DashInputStop; if (_airDashDirectionInput != Vector2.zero) { _airDashFaceDirection = _airDashDirectionInput; _airDashFaceDirection.Normalize(); } if (_dashInputStop || Time.unscaledTime >= startTime + SwordCharacterData.AirDashMaxHoldTime) { _isHolding = false; SwordCharacter.SetShockWave(false); Time.timeScale = 1; startTime = Time.time; SwordCharacter.CheckIfShouldFlip(Mathf.RoundToInt(_airDashFaceDirection.x)); SwordCharacter.RB.drag = SwordCharacterData.Drag; SwordCharacter.SetVelocityEightDirectional(SwordCharacterData.AirDashVelocity, _airDashFaceDirection); PlaceAfterImage(); } } else { SwordCharacter.SetVelocityEightDirectional(SwordCharacterData.AirDashVelocity, _airDashFaceDirection); CheckIfShouldPlaceAfterImage(); if (Time.time >= startTime + SwordCharacterData.AirDashTimeDistance) { SwordCharacter.RB.drag = 0; IsAbilityDone = true; _lastAirDashTime = Time.time; } } }