Я исследовал, как реализовать рудиментарную систему гравитации в slick2d. Вот код, который у меня есть (это функция обновления):Прыжки трудности в Slick2D
if (input.isKeyDown(Input.KEY_UP)) {
spressed = true; //Has the UP key been pressed?
}
if (spressed) {
if (!sjumping) {//if so, are we already in the air?
Sub_vertical_speed = -1.0f * delta;//negative value indicates an upward movement
sjumping = true;//yes, we are in the air
}
if (sjumping) { //if we're in the air, make gravity happen
Sub_vertical_speed += 0.04f * delta;//change this value to alter gravity strength
}
Sub.y += Sub_vertical_speed;
}
if (Sub.y == Sub.bottom){//Sub.bottom is the floor of the game
sjumping = false;//we're not jumping anymore
spressed = false;//up key reset
}
Здесь возникает проблема. Когда я нажимаю клавишу «вверх», спрайт прыгает и идет нормально, но нажатие клавиши «вверх» снова ничего не делает. Первоначально я думал, что это было причиной того, что я не сбросил лишние строки, поэтому я добавил строку, чтобы установить ее в false, но вы все равно можете прыгать только один раз. :/
Спасибо! Но для людей, которые читают это, это должно быть> =, а не <= – Steampunkery
Да, не понял, что ваше нижнее значение было больше. Я сделал соответствующие изменения. Также отметьте как ответ :) – Steve