Как написать правильный скрипт перехода на unity2d? Hardbody.addforce не работает - PullRequest
0 голосов
/ 14 сентября 2018

Хорошо, я создаю простой платформер и изо всех сил пытаюсь заставить игровой объект игрока прыгать. Проблема в том, что когда я нажимаю пробел, мой игровой объект просто телепортируется вверх, а затем падает, и это совсем не похоже на прыжок. Как я знаю, он должен имитировать импульс, и я должен видеть, как объект движется вверх, но я не знаю.

void Update () 
{
    if (Input.GetKeyDown(KeyCode.UpArrow))
    {
        rigidbody2d.AddForce(Vector2.up * 50f, ForceMode2D.Impulse);
    }

}

Кроме того, я попытался скопировать код из пары учебных пособий, где он работал просто отлично, но у меня не получилось.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы можете попробовать использовать это решение:

rigidbody2d.AddForce(Vector2.up * 50f, ForceMode2D.Force);

Я изменил ForceMode2D.Impulse на ForceMode2D.Force, возможно, это будет работать. Я тоже столкнулся с этой проблемой - взлететь и не могу сесть XD

0 голосов
/ 14 сентября 2018

Как прокомментировал @bolkay, вы можете изменить скорость твердого тела, однако, если у вас возникли проблемы с этим, вы должны следовать предложению единства, а не изменять его напрямую и, возможно, начать манипулировать скоростью, когда у вас появится больше навыков.Документы для скорости: https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html

, который сказал, прыгать со скоростью:

rb.velocity=rb.velocity+transform.up*jumpPower; //easier to predict
rb.velocity= transform.velocity*transform.up*jumpPower
rb.velocity= new vector2(rigidbody2d.velocity.x,jumpPower);//erases your rb's previous y velocity

Я думаю, что ваша проблема в силе, которую вы применяете (код кажется в порядке), попробуйте объявить floatи играть с его значением во время выполнения.Также проверьте свойства вашего рб у инспектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...