diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs b/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs index 96b2763..b4dbb14 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs @@ -75,7 +75,7 @@ namespace Code.Gameplay.Character.Controller _inputHandler.MoveInputVector = Vector3.zero; _inputHandler.LookInputVector = Vector3.one; _inputHandler.IsSprinting = false; - _groundMovement.CancelJumpRequest(); + _groundMovement.RequestJump(inputs.JumpPressed); return; } @@ -135,6 +135,12 @@ namespace Code.Gameplay.Character.Controller // Обновление скорости движения персонажа public void UpdateVelocity(ref Vector3 currentVelocity, float deltaTime) { + // Если во время слайда запрошен прыжок — прерываем слайд + if (_slideMechanic.IsSliding && _groundMovement.JumpRequested) + { + _slideMechanic.EndSlide(); + } + // Проверяем запрос слайда и запускаем его если можно if (!_slideMechanic.IsSliding) { diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/Movement/GroundMovementSystem.cs b/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/Movement/GroundMovementSystem.cs index 767c0b8..9d95784 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/Movement/GroundMovementSystem.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/Movement/GroundMovementSystem.cs @@ -17,8 +17,9 @@ namespace Code.Gameplay.Character.Controller.Movement private readonly float _stableMovementSharpness; // Скорость прыжка private readonly float _jumpSpeed; - // Флаг указывающий, что был запрошен прыжок - private bool _jumpRequested; + + // Свойство-флаг указывающий, что был запрошен прыжок + public bool JumpRequested { get; private set; } // Конструктор системы движения на земле public GroundMovementSystem(float maxStableMoveSpeed, float sprintMoveSpeed, float stableMovementSharpness, float jumpSpeed) @@ -33,13 +34,13 @@ namespace Code.Gameplay.Character.Controller.Movement public void RequestJump(bool jumpPressed) { if (jumpPressed) - _jumpRequested = true; + JumpRequested = true; } // Метод для отмены запроса на прыжок извне public void CancelJumpRequest() { - _jumpRequested = false; + JumpRequested = false; } // Обновление скорости движения персонажа на земле @@ -76,10 +77,10 @@ namespace Code.Gameplay.Character.Controller.Movement ); // Если запрошен прыжок - if (_jumpRequested) + if (JumpRequested) { currentVelocity += motor.CharacterUp * _jumpSpeed - Vector3.Project(currentVelocity, motor.CharacterUp); - _jumpRequested = false; // Сброс сразу после применения + JumpRequested = false; // Сброс сразу после применения motor.ForceUnground(); } }