public void updateHitDetections() { // Checking if any bullet hit an enemy for (Bullet b : bullets) { for (Enemy e : enemies) { if (e.hasSpawned() && e.getLife() > 0) { // Custom hitdetection for the worm // It just uses the parts as they were enemies if (e instanceof EnemyWorm) { for (EnemyWorm.Part p : ((EnemyWorm) e).getParts()) { if ((b.getX() - p.getX()) * (b.getX() - p.getX()) + (b.getY() - p.getY()) * (b.getY() - p.getY()) < p.getOuterRadius() * p.getOuterRadius() + b.getWidth() * b.getWidth() * 4) { p.hit(Bullet.damage); b.hit(); // Adding a small camerashake Camera.shake(0.1f, 0.05f); // Rewarding player depending on game mode enemyHit(e); break; } } } else if ((b.getX() - e.getX()) * (b.getX() - e.getX()) + (b.getY() - e.getY()) * (b.getY() - e.getY()) < e.getOuterRadius() * e.getOuterRadius() + b.getWidth() * b.getWidth() * 4) { e.hit(Bullet.damage); b.hit(); // Rewarding player depending on game mode enemyHit(e); break; } } } } }
public void enemyHit(Enemy e) { if (e.getLife() <= 0) { gameMode.enemyKilled(e); cs.activate(enemies.size); enemiesKilled++; oss.spawn( e.getX(), e.getY(), e.getDx() * Enemy.getSlowdown(), e.getDy() * Enemy.getSlowdown(), 2); Camera.shake(0.3f, 0.1f); if (isSoundEnabled()) killSound.play(0.75f, (float) (1 + Math.random() / 3 - 0.16), 0); } }