В моей мобильной игре главному персонажу нужно прыгать к определенной точке y, прежде чем снова начнет падать из-за силы тяжести. Как я мог рассчитать скорость y, которую мне нужно было бы достичь (в пике) заданной позиции y с заданной гравитацией?
Я пытался сделать это с помощью твин вместо физики аркады, потому что это было именно то, что мне нужно (расстояние, пройденное со временем с гравитационным эффектом), но производительность не была хорошей и постоянно распылялась.
В настоящее время я использую Phaser 2.6.2. Спасибо!
Есть два вида времени в играх, время цикла и deltaTime.
В сценарии, основанном на цикле, физика не переключается на учет отставания, поэтому наилучшим решением является следующее:
Вы начинаете с последовательности чисел, в которой вы объединяете гравитацию с предыдущим номером в последовательности, пока ваша сумма не будет равна вашей желаемой высоте.
Например, я буду использовать height = 75, gravity = 5, а jumpForce = unknown
(5 + 10 + 15 + 20 + 25) = 75
Сила прыжка, необходимая для достижения этой высоты, будет последним числом в последовательности, равной "25".
В сценарии deltaTime (как используется в этом случае) физика абстрагируется, чтобы попытаться скорректировать время.
Итак, если у вас 5 кадров в секунду, у вас будет 5 циклов в секунду. если у вас 20 кадров в секунду, у вас будет 20 циклов в секунду; Таким образом, эта абстракция делает вышеупомянутое несущественным.
Вместо этого используйте стандартную формулу тяжести по высоте = скорость ^ 2/(2 * тяжести)., Потому что это будет лучше моделировать формулы, используемые двигателями с дельта-временем.