Spieler fällt nicht mehr durch Platformen, wenn er mehrere gleichzeitig berührt
This commit is contained in:
Binary file not shown.
+19
-40
@@ -58,48 +58,27 @@ public class Player extends Actor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Schwerkraft
|
// Schwerkraft
|
||||||
private void fall()
|
private void fall() {
|
||||||
{
|
int oldY = getY();
|
||||||
int oldY = getY();
|
verticalSpeed += gravity;
|
||||||
|
int newY = getY() + verticalSpeed;
|
||||||
verticalSpeed += gravity;
|
setLocation(getX(), newY);
|
||||||
|
// Alle Plattformen überprüfen, die der Spieler berührt
|
||||||
int newY = getY() + verticalSpeed;
|
java.util.List<Plattform> platforms = getIntersectingObjects(Plattform.class);
|
||||||
|
boolean landed = false;
|
||||||
setLocation(getX(), newY);
|
for (Plattform platform : platforms) {
|
||||||
|
int groundTop = platform.getY() - platform.getImage().getHeight() / 2;
|
||||||
Actor ground = getOneIntersectingObject(Plattform.class);
|
int characterBottom = getY() + getImage().getHeight() / 2;
|
||||||
|
int oldCharacterBottom = oldY + getImage().getHeight() / 2;
|
||||||
if (ground != null && verticalSpeed >= 0)
|
// Prüfen, ob der Spieler von oben auf diese Plattform fällt
|
||||||
{
|
if (verticalSpeed >= 0 && oldCharacterBottom <= groundTop && characterBottom >= groundTop) {
|
||||||
int groundTop = ground.getY()
|
setLocation( getX(), groundTop - getImage().getHeight() / 2 );
|
||||||
- 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
|
|
||||||
);
|
|
||||||
|
|
||||||
verticalSpeed = 0;
|
verticalSpeed = 0;
|
||||||
onGround = true;
|
landed = true;
|
||||||
}
|
break; }
|
||||||
|
} onGround = landed;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
onGround = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean collision(){
|
public boolean collision(){
|
||||||
if (getIntersectingObjects(Projectile.class).size()>0)
|
if (getIntersectingObjects(Projectile.class).size()>0)
|
||||||
|
|||||||
Reference in New Issue
Block a user