/**
* Comprueba las colisiones del jugador con los elementos móviles del juego
* Enemigos e items
*/
private void checkCollisions() {
Rectangle playerRect = new Rectangle();
playerRect.set(player.position.x, player.position.y, Player.WIDTH, Player.HEIGHT);
// Comprueba si el enemigo ha chocado contra algún enemigo
for (Enemy enemy : levelManager.enemies) {
Rectangle enemyRect = new Rectangle();
enemyRect.set(enemy.position.x, enemy.position.y, Enemy.WIDTH, Enemy.HEIGHT);
if (enemyRect.overlaps(playerRect)) {
// Si el jugador está por encima elimina el enemigo
if (player.position.y > (enemy.position.y + 5)) {
ResourceManager.getSound("sounds/kick.wav").play();
levelManager.enemies.removeValue(enemy, true);
// El jugador rebota
player.jump(false);
}
// Si está al mismo nivel o por debajo se pierde una vida
else {
player.velocity.x = player.velocity.y = 0;
player.die();
}
}
}
// Comprueba si el jugador recoge algún item de la pantalla
for (Item item : levelManager.items) {
Rectangle itemRect = new Rectangle();
itemRect.set(item.position.x, item.position.y, Item.WIDTH, Item.HEIGHT);
if (itemRect.overlaps(playerRect)) {
ResourceManager.getSound("sounds/1up.wav").play();
levelManager.items.removeValue(item, true);
levelManager.currentLives++;
}
}
boolean stuck = false;
// Comprueba colisiones con las plataformas móviles de la pantalla
for (Platform platform : levelManager.platforms) {
Rectangle platformRectangle = new Rectangle(platform.position.x, platform.position.y, platform.width, platform.height);
// Si colisiona con una se coloca encima y se "pega" a ella
if (platformRectangle.overlaps(playerRect)) {
// Si está cayendo y está por encima se coloca en la plataforma
if ((player.velocity.y < 0) && (player.position.y > platformRectangle.y)) {
player.position.y = platformRectangle.y + platformRectangle.height;
player.canJump = true;