diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index 758a8bd..887bfb5 100644 Binary files a/SMIMS-Game/Player.class and b/SMIMS-Game/Player.class differ diff --git a/SMIMS-Game/Player.java b/SMIMS-Game/Player.java index 0d01b85..1ed0bd9 100644 --- a/SMIMS-Game/Player.java +++ b/SMIMS-Game/Player.java @@ -58,48 +58,27 @@ public class Player extends Actor } } - // Schwerkraft - private void fall() - { - int oldY = getY(); - - verticalSpeed += gravity; - - int newY = getY() + verticalSpeed; - - setLocation(getX(), newY); - - Actor ground = getOneIntersectingObject(Plattform.class); - - if (ground != null && verticalSpeed >= 0) - { - int groundTop = ground.getY() - - ground.getImage().getHeight() / 2; - - int characterBottom = getY() - + getImage().getHeight() / 2; - - // Nur landen, wenn der Spieler vorher über dem Boden war - int oldCharacterBottom = oldY - + getImage().getHeight() / 2; - - if (oldCharacterBottom <= groundTop && - characterBottom >= groundTop) - { - setLocation( - getX(), - groundTop - getImage().getHeight() / 2 - ); - + // Schwerkraft + private void fall() { + int oldY = getY(); + verticalSpeed += gravity; + int newY = getY() + verticalSpeed; + setLocation(getX(), newY); + // Alle Plattformen überprüfen, die der Spieler berührt + java.util.List platforms = getIntersectingObjects(Plattform.class); + boolean landed = false; + for (Plattform platform : platforms) { + int groundTop = platform.getY() - platform.getImage().getHeight() / 2; + int characterBottom = getY() + getImage().getHeight() / 2; + int oldCharacterBottom = oldY + getImage().getHeight() / 2; + // Prüfen, ob der Spieler von oben auf diese Plattform fällt + if (verticalSpeed >= 0 && oldCharacterBottom <= groundTop && characterBottom >= groundTop) { + setLocation( getX(), groundTop - getImage().getHeight() / 2 ); verticalSpeed = 0; - onGround = true; - } + landed = true; + break; } + } onGround = landed; } - else - { - onGround = false; - } - } public boolean collision(){ if (getIntersectingObjects(Projectile.class).size()>0)