Der Spieler kann nun höher springen und wird nicht auf einen Boden gesetzt, wenn er diesen von der Seite berührt

This commit is contained in:
2026-09-15 10:30:38 +02:00
parent 9e35cc9ebb
commit 44f7382b6f
3 changed files with 26 additions and 21 deletions
Binary file not shown.
+22 -11
View File
@@ -2,8 +2,8 @@ import greenfoot.*;
public class Player extends Actor public class Player extends Actor
{ {
private int speed = 4; private int speed = 6;
private int jumpStrength = 12; private int jumpStrength = 20;
private int gravity = 1; private int gravity = 1;
private int verticalSpeed = 0; private int verticalSpeed = 0;
@@ -40,27 +40,38 @@ public class Player extends Actor
} }
} }
// Schwerkraft und Boden-Kollision // Schwerkraft
private void fall() private void fall()
{ {
int oldY = getY();
verticalSpeed += gravity; verticalSpeed += gravity;
int newY = getY() + verticalSpeed; int newY = getY() + verticalSpeed;
// Prüfen, ob wir auf Ground landen
setLocation(getX(), newY); setLocation(getX(), newY);
Actor ground = getOneIntersectingObject(Ground.class); Actor ground = getOneIntersectingObject(Ground.class);
if (ground != null) if (ground != null && verticalSpeed >= 0)
{ {
// Wenn wir fallen, stehen wir auf dem Ground int groundTop = ground.getY()
if (verticalSpeed >= 0) - ground.getImage().getHeight() / 2;
{
int groundTop = ground.getY() - ground.getImage().getHeight() / 2;
int characterHalfHeight = 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; verticalSpeed = 0;
onGround = true; onGround = true;
+3 -9
View File
@@ -4,21 +4,15 @@ class.Player.image=ppl2.png
dependency1.from=PlayerTestWorld dependency1.from=PlayerTestWorld
dependency1.to=Ground dependency1.to=Ground
dependency1.type=UsesDependency dependency1.type=UsesDependency
dependency2.from=PlayerTestWorld dependency2.from=Player
dependency2.to=Player dependency2.to=Ground
dependency2.type=UsesDependency 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.height=737
editor.fx.0.width=814 editor.fx.0.width=814
editor.fx.0.x=360 editor.fx.0.x=360
editor.fx.0.y=26 editor.fx.0.y=26
height=830 height=830
package.numDependencies=4 package.numDependencies=2
package.numTargets=4 package.numTargets=4
project.charset=UTF-8 project.charset=UTF-8
publish.hasSource=false publish.hasSource=false