SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › Отражение пули › Ответ в теме: Отражение пули
У тебя проверка на столкновение с врагом находится в условии события
Сделай так
C++
1 2 3 4 5 6 7 8 9 |
if (Keyboard::isKeyPressed(Keyboard::Down)) { bullet->dx = 0.3; } if (bullet->getRect().intersects((enemy)->getRect())) { bullet->Health = 0; enemy->Health -= 5; } |
Вынеси его оттуда.
И добавь флаг bool для состояния пули, и в момент отражения меняй его.
И уже в событии со столкновением с врагом проверяй какой флаг стоит, если отражён то нанести урон и удалить пулю, иначе пролететь мимо и it++.
Иначе враг стреляя будет наносить урон себе и другим врагам.
Зачем пуле состояние Health? Пулю можно удалить во время нанесения урона.