Ошибка 2D-прыжка - PullRequest
       31

Ошибка 2D-прыжка

0 голосов
/ 13 марта 2011

В основном, вот мой код:

<code>
bool Player::onCollision(BaseOBJ* obj)
{
    if(obj->name == "phys_static")
    {
        jumping = true;
    }
    return true;
}</p>

<p>void Player::jump()
{
    if(jumping == true)
    {
        ApplyForce(Vec2(0.f, -13000.f), Vec2(0.f, 0.f));
        jumping = false;
    }
}

onCollision вызывается первым, когда происходит столкновение.Он не вызывается, если не было каких-либо новых столкновений (например, регистрировались бы только прыжки, не перемещаясь из стороны в сторону)

Обычно он работает нормально, однако, если я удерживаю клавишу прыжка до концапрыгать (с момента запуска до касания земли) я не могу прыгать снова.Любые решения?

1 Ответ

0 голосов
/ 14 марта 2011

Часто пропускаемая проблема с удержанием клавиши заключается в том, что ваша операционная система преобразует это в быстрые повторные нажатия.

Пример. В текстовом редакторе удерживайте клавишу А.Появится один «а», а затем, после небольшой задержки: aaaaaaaaaaaaa (многократное нажатие клавиши «А» отправляется активному приложению.)

Вызывается ли ваша функция перехода несколько раз и как-то портитсяВы хотели, чтобы проверка прыжков сработала?

Если нет, пожалуйста, ответьте на некоторые вопросы, заданные более ранними комментаторами.

PS Предложение на стороне: мне кажется, что «прыжки» должныбыть названным «canJump» или «allowJumping».Это позволяет избежать путаницы.Прямо сейчас это звучит так, как будто это указывает, прыгаете ли вы , тогда как вы фактически используете это, чтобы указать, можете ли вы прыгнуть.

...