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:
Binary file not shown.
+22
-11
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user