From 6ee623cad4dfb14c903540766e99ccd7b1e0cc6e Mon Sep 17 00:00:00 2001 From: Jonas Date: Tue, 15 Sep 2026 20:19:35 +0200 Subject: [PATCH] =?UTF-8?q?Spieler=20f=C3=A4llt=20nicht=20mehr=20durch=20P?= =?UTF-8?q?latformen,=20wenn=20er=20mehrere=20gleichzeitig=20ber=C3=BChrt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMIMS-Game/Player.class | Bin 2867 -> 3080 bytes SMIMS-Game/Player.java | 59 +++++++++++++--------------------------- 2 files changed, 19 insertions(+), 40 deletions(-) diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index 758a8bd54a05e288284de5033d406b749feda507..887bfb52e75738efdfe3f50840cec58690971fcf 100644 GIT binary patch delta 1370 zcmZXU{ZCtE6vsbLdwXwN8kmd{%8OHAZZwd>W~x$^VJ2>|0!s+GNir_<4vK|BTQ)#l zeVaqjsk`c&^KDK;Vz$IZsWKB|{L%PV_=Ep}KlnP&ZM#tQhkNdM&htIrbDr;W?)|cU zwZZ@6-#5Mk`uX&_{}-2i&E1zbnJ}0Pkib$@&zL98$YL&;io}!IoWh&TSs62z&M4~l zcEq>050~SyDyEn=NCudpO;P)Qh{BjQvxC-B&cUVv%rd9Y<|LqKue(K?GUuiuLlZOB zWG?3C7(I?z2#_Ib_qjXuMS2ZR+6(SoT?+=w3jc5>?Vyt>s|u5+13bfiA7Z=<@)s5b=Z zMn!OOR|$UJIM}}~(Rw^$_u>`C5MA6!gnjg|&9T3NL&Ftn5R#5^%`-;iki$}oCN@e9 z_tL<9v=FOcxV?fwx@ZxC&Juz2zab6yCHaQ^r_q^rN42gk#udGukY|e%ii<2d-cyS2 zIo7L(^a5$e%ooUcQi-S$F3>H{sp5J(>TRl6_`+Wix`d2Dfgk~qm* zye%S$FlF^TZ1RrmDk=UU7sPX9Jjc5tkz1Nr=RI~wyO$)#L6!F2mp$k9n{eOc9&`h* zQU<0xQ}72%zYC3`l{T?!NkKkY3_x?ZcB#PF7As2X)qKkXN57`;8xCk!-B$(YE(%k+ z`4Oram79N@M#KjQ{Y+q34hDZ7Ye*|k)X`e1~px^tFp9L{R5U$vazV^G-L9E zI!;Q2m?g&?%gh(c-XWAiST5^$9~BjKypOpo`Z$X2K>v$&gVUm~IH1<1wIWF!%EGDd>!aNP@LDn-Q-ilBL6> z4Jo9}A985J2+rup+K@wsgoaWf1;YH{M2@v7xx^$h3K-QfX2ZDItE_6Cl%U26snmqH zIA_CoTrjUHtEG$PE9Hq>$s}Wa%uE|&{AuxQrjU+FSp0uW<|p-oG;PjkLFtnDQCqj{ zGUc*C;_AT_T;*TFHE3L?O-&CG)vd2Kg>`I$Le=biF>#-Qg7oX>I6SHvlP(IN~r84D<$A~y0nUD}@tsLN_Lnq9LiFX6VU zcI5?DdUzGKi;OZlRz$>OS%A}{EWkB~IuRLlhM~M~l;qo*kiWq*2jJen9=&X8_Km&&9Q4%c}sqx75uSYFp@mEZKVGSG-1m#gF zu$56P!5FI>M;lwOj>?)E5{}A}MzYLOjB;(?SiKmwN$);6pwQa9>8o#To+#q%GuSNw zWe$zLrYUaCw!3hq(cyCxNt6tkC 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)