Нет ни одного правильного ответа на этот вопрос, и если вы не найдете библиотеку игрового дизайна, то тоже нет простого. Ваша проблема в том, что вы перемещаете персонажа мгновенно в ответ на ввод, но скачок требует движения со временем. Вам придется либо найти движущуюся библиотеку спрайтов - у меня нет, в частности, рекомендации, но я уверен, что у Google есть несколько - или настройте что-то самостоятельно, которое запускается каждые миллисекунды и обновляет позицию персонажа, а некоторые вид переменной скорости.
Редактировать: Глядя на этот учебник, самое простое решение, которое приходит на ум, это поместить ваш код анимации внутри Update()
, например, так:
function Update() {
LimparTela();
Animate();
Draw();
}
Внутри Animate()
, вы должны следить за высоты персонажа и вертикальный импульс. Если импульс положительный, немного увеличьте y-позицию, иначе уменьшите ее немного. В любом случае, немного уменьшите количество оборотов. Добавьте что-то, чтобы персонаж не проходил через пол, и чтобы ключ вверх установил импульс персонажа, чтобы он был положительным, если он на полу.
Обратите внимание, что это невероятно голое решение, но для базового учебного пособия он выполнит эту работу.
как ты налево и направо? – lbstr
Извините, я не читал учебник. Я предполагаю, что ответ на мой вопрос есть. nevermind – lbstr
Да. Это почти то же самое, что и «y», но u положил переменную «x». Перемещение влево - это просто x - = dx. – Amay