SFML и C++ Уроки \ Разработка игр › Форумы › SFML готовые решения (сниппеты) и советы › Двойной прыжок для персонажа
В этой теме 2 ответа, 2 участника, последнее обновление reunion 9 года/лет, 1 месяц назад.
-
АвторСообщения
-
Допустим, нам нужно сделать двойной прыжок для персонажа в игре. При этом, он должен прыгнуть второй раз и опуститься на землю, больше не прыгая, пока не опустится.
Объявим 2 переменных:
C++12int jumpCounter=0; //счетчик наших прыжковbool xTwo=false; //можем ли мы совершить двойной прыжок
Для начала в нашем цикле, который обрабатывает события while(pollEvent(event)) напишем несколько простых строк.C++12345if (event.type==Event::KeyReleased)// если отпустили кнопкуif (event.key.code == Keyboard::Up)// Эта кнопка Up{jumpCounter++; //счетчик прыжков стакаемxTwo = true; //и мы можем сделать двойной прыжокУ меня управление персонажем сейчас находится в функции main(). Если у вас не так, то отталкивайтесь от этого.
Теперь в нашем управлении кнопкой Up прописывам несколько строк.C++123456if ((Keyboard::isKeyPressed(Keyboard::Up)) && (p.onGround))// Если кнопка Up нажата и персонаж на земле{jumpCounter=0; //кол-во прыжков обнуляемp.state = p.jump; //состояние героя становится прыжкомp.onGround = false;//герой не на земле}По сути, из урока мы убрали только dy=-0.5 и добавили обнуление счетчика прыжков.
C++12345while ((xTwo == true) && (p.y>660)&&(jumpCounter<2)) //Пока мы можем сделать двойно прыжок и мы делали меньше двух прыжков за все время{p.dy = -0.4; присваиваем наше изменение скорости по yxTwo = false; и мы не можем сделать двойно прыжок}p.y здесь задает высоту, с которой персонаж может делать второй прыжок. Чем число меньше, тем с более высокой планки начнется прыжок.
Я пробовал по разному изменять ситуации. Персонаж делает ровно 2 прыжка и не “летает”, если во время второго нажимать на клавишу Вверх постоянново. выложил сюда решение своего вопроса. лайк тебе:)
а не пробовал сделать с одной bool переменной? во время “не на земле” она должна быть тру пока не прыгнешь. и потом проверяй если эта переменная тру и тд, то можно прыгнуть второй раз. как только прыгнул она сразу фолсДействительно, спасибо!
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.