private void soundBump() { // we check if the sound should be replayed if (bumpWallPlayed || bumpTopPlayed) { // if the x position has really changed (3 pixels) and the player is // no more facing to wall (useful to avoid problem with pushing // crates), the bump can again be played if (((Globals.player.getX() - bumpWallX) > 3 || (Globals.player.getX() - bumpWallX) < -3) && !Globals.player.isTotallyFacingToWall()) { bumpWallPlayed = false; } if (((Globals.player.getY() - bumpTopY) > 3 || (Globals.player.getY() - bumpTopY) < -3 || (Globals.player.getX() - bumpTopX) > 3 || (Globals.player.getX() - bumpTopX) < -3)) { bumpTopPlayed = false; } } // If the player is facing to a wall if (Globals.player.isFacingToWall()) { // to have the sound from the right or the left depending on the // position of the wall and the player int decal = 0; if (Globals.player.facingRight()) decal = 1; else decal = -1; // If the sound should be replayed, it will if (!bumpWallPlayed) { soundBump.playAt( 1.5f, 5f, Globals.player.getX() - Globals.player.getWidth() / 2 + decal, Globals.player.getY() - Globals.player.getHeight() / 2, 0.0f); bumpWallPlayed = true; bumpWallX = Globals.player.getX(); } else { soundBump.setSourcePosition( Globals.player.getX() - Globals.player.getWidth() / 2 + decal, Globals.player.getY() - Globals.player.getHeight() / 2, 0.0f); } } // If the player is knocking his head somewhere when jumping else if (Globals.player.isTopCollided() && Globals.player.jumping()) { // If the sound should be replayed, it will if (!bumpTopPlayed) { soundBump.playAt( 1.5f, 1f, Globals.player.getX() - Globals.player.getWidth() / 2, Globals.player.getY() - Globals.player.getHeight() / 2, 0.0f); bumpTopPlayed = true; bumpTopX = Globals.player.getX(); bumpTopY = Globals.player.getY(); } } }