В настоящее время я создаю 2D-платформер на Java. Я новичок, так что успокойся. У меня проблема с гравитацией в игре. Я использую разные переменные для падения и прыжков. Я использую черепичную карту. Поэтому давайте перейдем к делу. Моего метод падения работает как это -Java 2D Platformer Gravity
if(collisionDown == false) {
characterY += fall;
fall ++;
{
падение равно 4. Если и collisionDown правды он сбрасывает обратно 4.
Моего метод прыжка почти то же самый:
if(key.E == true && collisionDown == true) {
characterY -= jump;
jump --;
}
прыжок равен 16. И если значение collisonDown истинно, оно сбрасывается до 16.
Теперь проблема заключается в следующем: представьте, что персонаж прыгает. его в воздухе и при спуске характерY + = падение; скажем, characterY = 250, а падение равно - 15 в этот точный момент. Следующая сплошная плитка под символом начинается с Y-позиции 255. Символ находится на 250 и НЕ обнаруживает столкновение, поэтому в следующем кадре он добавляет 15 к символуY, который равен 250 + 15 = 265. В этот момент символ «ввел» сплошную черепицу который находился в позицииY 255.
У меня есть «исправлено», чтобы персонаж вернулся в верхнюю часть сплошной плитки (и это видно и раздражает.) Это не идеальное решение, потому что оно замедляет символ 1 кадр каждый время, когда он входит в сплошную плитку (потому что он обнаруживает левое и правое столкновение, и персонаж не может двигаться). Характер явно заикается, если я могу так сказать.
Мне нужно решение этой проблемы, но не может придумать. Итак, если вы сделаете предложение, я буду счастлив. Спасибо.
Простой и эффективный. благодаря –