Phaser рассчитать необходимую скорость y для заданной точки y

1

В моей мобильной игре главному персонажу нужно прыгать к определенной точке y, прежде чем снова начнет падать из-за силы тяжести. Как я мог рассчитать скорость y, которую мне нужно было бы достичь (в пике) заданной позиции y с заданной гравитацией?

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

В настоящее время я использую Phaser 2.6.2. Спасибо!

Теги:
phaser-framework

1 ответ

1
Лучший ответ

Есть два вида времени в играх, время цикла и deltaTime.

В сценарии, основанном на цикле, физика не переключается на учет отставания, поэтому наилучшим решением является следующее:

Вы начинаете с последовательности чисел, в которой вы объединяете гравитацию с предыдущим номером в последовательности, пока ваша сумма не будет равна вашей желаемой высоте.

Например, я буду использовать height = 75, gravity = 5, а jumpForce = unknown

(5 + 10 + 15 + 20 + 25) = 75

Сила прыжка, необходимая для достижения этой высоты, будет последним числом в последовательности, равной "25".

В сценарии deltaTime (как используется в этом случае) физика абстрагируется, чтобы попытаться скорректировать время.

Итак, если у вас 5 кадров в секунду, у вас будет 5 циклов в секунду. если у вас 20 кадров в секунду, у вас будет 20 циклов в секунду; Таким образом, эта абстракция делает вышеупомянутое несущественным.

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

  • 0
    Я не уверен, что я не понимаю вашу логику, или это просто не работает для моей ситуации. Гравитация, которую я использую, составляет 1400, но расстояние, которое мне нужно пройти, составляет 440
  • 1
    Попробуйте высоту = скорость ^ 2 / (2 * гравитация). Итак: JumpVelocity = 1110.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню