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.
+23
-12
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user