Почему скорость (_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);
хотя тип приложения силы может быть другой