Почему скорость (_velocity_) не меняется после попытки прыжка в данной функции и почему в Debug Log выводится сообщение "ПОЧЕМУ ТЫ НЕ ХОЧЕШЬ РАБОТАТЬ"? <br/> <pre><code class="cs">private void Jump() { if(jumpCountActive != 0) { _playerRb.velocity = new Vector2(_playerRb.velocity.x , _playerRb.position.y * jumpHeight * 100); Debug.Log("ПОЧЕМУ ТЫ НЕ ХОЧЕШЬ РАБОТАТЬ"); jumpCountActive -= 1; } }</code></pre>
Проблема возникает из-за некорректной записи новой скорости в строке `_playerRb.velocity = new Vector2(_playerRb.velocity.x , _playerRb.position.y * jumpHeight * 100);`. Вместо `_playerRb.position.y` нужно использовать `_playerRb.velocity.y` чтобы указать текущую скорость по оси Y. Исправленный код должен выглядеть так: ```csharp private void Jump() { if(jumpCountActive != 0) { _playerRb.velocity = new Vector2(_playerRb.velocity.x, jumpHeight * 100); Debug.Log("ПОЧЕМУ ТЫ НЕ ХОЧЕШЬ РАБОТАТЬ"); jumpCountActive -= 1; } } ``` После внесения этого изменения значение `velocity` у `Rigidbody` должно обновляться корректно при прыжке.
ну _playerRb.position.y получается ты умножаешь положение на силу и если игрок стоит в 0 то силы не будет и наоборот если стоит высоко то будет прыгать сильно
да и лучше использовать addforce
_playerRb.AddForce(_playerRb.transform.up * jumpHeight,ForceMode2D.Impulse);
хотя тип приложения силы может быть другой