Poprawiono kolizje bomb z pociskami gracza

This commit is contained in:
2025-01-15 21:58:20 +01:00
parent 0ea80559e5
commit 898671a72a
2 changed files with 57 additions and 4 deletions

View File

@@ -43,7 +43,7 @@ void Boss::dropBomb() {
if (bombClock.getElapsedTime().asMilliseconds() >= 5000) {
Bullet Bomb(position.x, position.y, BombaTexture);
Bomb.setSpeed(0.5f);
bullets.emplace_back(std::move(Bomb)); // Można zmienić na bombę
bombs.emplace_back(std::move(Bomb)); // Można zmienić na bombę
std::cout << "Bombka lezy" << std::endl;
bombClock.restart();
}

View File

@@ -393,9 +393,9 @@ void Plansza::update() {
}
// Kolizja bossa z graczem
if (ship->getSprite().getGlobalBounds().intersects(boss->getSprite().getGlobalBounds())) {
ship->takeDamage();
}
// if (ship->getSprite().getGlobalBounds().intersects(boss->getSprite().getGlobalBounds())) {
// ship->takeDamage();
// }
} else if (bossSpawned && (!boss || !boss->isAlive())) {
std::cout << "Boss defeated!" << std::endl;
delete boss;
@@ -431,6 +431,59 @@ void Plansza::update() {
}
}
// Sprawdzenie kolizji pocisków gracza z bombami Bossa
for (auto bombIt = boss->getBombs().begin(); bombIt != boss->getBombs().end();) {
bool bombHit = false;
for (auto bulletIt = ship->getBullets().begin(); bulletIt != ship->getBullets().end();) {
if (bombIt->getSprite().getGlobalBounds().intersects(bulletIt->getSprite().getGlobalBounds())) {
ship->getBullets().erase(bulletIt);
bombIt = boss->getBombs().erase(bombIt);
bombHit = true;
break;
} else {
++bulletIt;
}
}
if (!bombHit) {
++bombIt;
}
}
// Sprawdzenie kolizji rakiet gracza z bombami Bossa
for (auto bombIt = boss->getBombs().begin(); bombIt != boss->getBombs().end();) {
bool bombHit = false;
for (auto rocketIt = ship->getBullets().begin(); rocketIt != ship->getBullets().end();) {
if (bombIt->getSprite().getGlobalBounds().intersects(rocketIt->getSprite().getGlobalBounds())) {
ship->getBullets().erase(rocketIt);
bombIt = boss->getBombs().erase(bombIt);
bombHit = true;
break;
} else {
++rocketIt;
}
}
if (!bombHit) {
++bombIt;
}
}
// Sprawdzenie kolizji rakiet gracza z bombami Bossa
for (auto bombIt = boss->getBombs().begin(); bombIt != boss->getBombs().end();) {
bool bombHit = false;
for (auto rocketIt = ship->getRockets().begin(); rocketIt != ship->getRockets().end();) {
if (bombIt->getSprite().getGlobalBounds().intersects(rocketIt->getSprite().getGlobalBounds())) {
ship->getRockets().erase(rocketIt);
bombIt = boss->getBombs().erase(bombIt);
bombHit = true;
break;
} else {
++rocketIt;
}
}
if (!bombHit) {
++bombIt;
}
}
}