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; } } } } }