SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Смерть персонажа
В этой теме 5 ответов, 3 участника, последнее обновление Ivan_gaga 6 года/лет, 6 мес. назад.
-
АвторСообщения
-
Не могу сделать нормальную смерть персонажа
вот код:
for (it = entities.begin(); it != entities.end(); it++)
{
if ((*it)->getRect().intersects(p.getRect()))
{
if ((*it)->name == “EasyEnemy”){if ((p.dy>0)&&(p.onGround == true)) {cout<<“health-50″;}
}
}
}
Когда мой игрок контактирует с врагом вычитание жизней происходит пока контакт не прекратится
вообщем вычитание жизней происходит ~60-100 раз
а мне надо чтобы это вычитание происходила один раз при каждом столкновении
Как это сделать?Также персонаж не хочет умирать
я пишу что то такое:
if(pl.health<=0){
pl.speed=0;
}
Но скорость не становиться равна 0 и персонаж продолжает двигаться,а вот камера ломается и больше за ним не следитКогда мой игрок контактирует с врагом вычитание жизней происходит пока контакт не прекратится
вообщем вычитание жизней происходит ~60-100 раз
а мне надо чтобы это вычитание происходила один раз при каждом столкновении
Как это сделать?Сделайте что бы при столкновении с врагом игрок отскакивал от него в противоположную сторону как и сам враг. Так же можно ввести логическую переменную которая будет отвечать за то что игрока ударили – когда игрока ударили она становиться true на некоторое время и пока она не станет обратно false то его нельзя будет опять атаковать.
Но скорость не становиться равна 0 и персонаж продолжает двигаться,а вот камера ломается и больше за ним не следит
Возможно у Вас есть еще какие-то переменные отвечающие за скорость движения – вроде dx или dy, которые не обнуляются.
Вот как я решил ету проблему:
C++123456if (damagtime == 0){Life -= 10; getdamge = true;}if (getdamge == true)damagtime = damageclock.getElapsedTime().asSeconds();if (damagtime > 0.5) { damageclock.restart(); damagtime = 0; getdamge = false; }Спасибо всем за помощь
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.