diff --git a/SMIMS-Game/Player.class b/SMIMS-Game/Player.class index ff9a79d..17b5d20 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 dbe19ac..a5cb43b 100644 --- a/SMIMS-Game/Player.java +++ b/SMIMS-Game/Player.java @@ -2,10 +2,10 @@ import greenfoot.*; public class Player extends Actor { - private int speed = 4; - private int jumpStrength = 12; + private int speed = 6; + private int jumpStrength = 20; private int gravity = 1; - + private int verticalSpeed = 0; private boolean onGround = false; @@ -40,27 +40,38 @@ public class Player extends Actor } } - // Schwerkraft und Boden-Kollision + // Schwerkraft private void fall() { + int oldY = getY(); + verticalSpeed += gravity; int newY = getY() + verticalSpeed; - // Prüfen, ob wir auf Ground landen setLocation(getX(), newY); Actor ground = getOneIntersectingObject(Ground.class); - if (ground != null) + if (ground != null && verticalSpeed >= 0) { - // Wenn wir fallen, stehen wir auf dem Ground - if (verticalSpeed >= 0) - { - int groundTop = ground.getY() - ground.getImage().getHeight() / 2; - int characterHalfHeight = getImage().getHeight() / 2; + int groundTop = ground.getY() + - ground.getImage().getHeight() / 2; - setLocation(getX(), groundTop - characterHalfHeight); + 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 + ); verticalSpeed = 0; onGround = true; diff --git a/SMIMS-Game/project.greenfoot b/SMIMS-Game/project.greenfoot index f079710..aa644c0 100644 --- a/SMIMS-Game/project.greenfoot +++ b/SMIMS-Game/project.greenfoot @@ -4,21 +4,15 @@ class.Player.image=ppl2.png dependency1.from=PlayerTestWorld dependency1.to=Ground dependency1.type=UsesDependency -dependency2.from=PlayerTestWorld -dependency2.to=Player +dependency2.from=Player +dependency2.to=Ground dependency2.type=UsesDependency -dependency3.from=MyWorld -dependency3.to=Player -dependency3.type=UsesDependency -dependency4.from=Player -dependency4.to=Ground -dependency4.type=UsesDependency editor.fx.0.height=737 editor.fx.0.width=814 editor.fx.0.x=360 editor.fx.0.y=26 height=830 -package.numDependencies=4 +package.numDependencies=2 package.numTargets=4 project.charset=UTF-8 publish.hasSource=false