Как насчет типичного физического движка, который позволяет прыгать кроликам? - PullRequest
1 голос
/ 02 ноября 2011

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Спенсер - я предполагаю, что вы говорите о том факте, что во многих играх, когда вы начинаете прыгать с кроликом, он набирает скорость / импульс.Я предполагаю, что, поскольку это угловой случай, когда я обычно слышу, что это называется прыжком кролика, а не просто перепрыгиванием.

В случаях, когда прыжок кролика набирает скорость, может быть несколько причини только один нужен для эффекта - некоторые физические движки переводят угол падения вперед + вниз, когда дело доходит до внезапной остановки (потому что вы снова находитесь в контакте с поверхностью), в некоторую дополнительную скорость движения вперед - возможно, выше исверх того, что обычно составляет максимум.

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

Тем не менее в других сила тяги прыжка включает дополнительную скорость движения вперед - фактически «прыжок» больше, чем добавление направления вверх (поднимая вас с земли) но и вперед и вверх.

Или любое их число может быть в игре.

Наконец, для тех игр, в которых скачок кролика приводит к все большей и большей скорости, чем больше вы это делаете, физический движок распознает, что вы 'сверх ограничения скорости, но вместо того, чтобы устанавливать жесткий потолок, он применяет замедляющую силу, чтобы замедлить вас до предела - однако большинство этих двигателей не применяют эту силу, пока вы находитесь в воздухе - вот почемуВаша скорость быстро останавливается, если вы пропускаете прыжки, но продолжается как сумасшедшая, если вы просто продолжаете прыгать.

Здесь мы надеемся, что это описательный ответ, который вы искали.Дайте мне знать, если вы хотите что-то еще.

0 голосов
/ 02 ноября 2011

Предположим, вы говорите о 2D-игре, такой как Super Mario:

Обрабатывайте оси x и y отдельно и используйте одну переменную для трения.

hop() {
    xSpeed *= friction;
    ySpeed *= -friction;
}

move() {
    x += xSpeed;
    y += ySpeed;
}

hop() следует назватькаждый раз, когда вы ударяете по горизонтальной стене, move() каждый кадр.

...