Merge remote-tracking branch 'origin/main'
# Conflicts: # SMIMS-Game/Player.class # SMIMS-Game/Player.ctxt # SMIMS-Game/Player.java # SMIMS-Game/project.greenfoot
This commit is contained in:
+66
-23
@@ -8,44 +8,87 @@ import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
||||
*/
|
||||
public class Player extends Actor
|
||||
{
|
||||
int velocityY = 0;
|
||||
int speed = 5;
|
||||
private int speed = 4;
|
||||
private int jumpStrength = 12;
|
||||
private int gravity = 1;
|
||||
|
||||
private int verticalSpeed = 0;
|
||||
private boolean onGround = false;
|
||||
|
||||
public void act()
|
||||
{
|
||||
player_movement();
|
||||
collision();
|
||||
moveLeftAndRight();
|
||||
jump();
|
||||
fall();
|
||||
}
|
||||
|
||||
public void player_movement(){
|
||||
if (Greenfoot.isKeyDown("D")){
|
||||
setLocation(getX()+speed, getY());
|
||||
|
||||
// Bewegung nach links und rechts
|
||||
private void moveLeftAndRight()
|
||||
{
|
||||
if (Greenfoot.isKeyDown("a"))
|
||||
{
|
||||
setLocation(getX() - speed, getY());
|
||||
}
|
||||
if (Greenfoot.isKeyDown("A")){
|
||||
setLocation(getX()-speed, getY());
|
||||
|
||||
if (Greenfoot.isKeyDown("d"))
|
||||
{
|
||||
setLocation(getX() + speed, getY());
|
||||
}
|
||||
}
|
||||
|
||||
public boolean onGround(){
|
||||
int height = getImage().getHeight();
|
||||
|
||||
Actor floor = getOneObjectAtOffset(
|
||||
0,
|
||||
height / 2 + 1,
|
||||
Ground.class
|
||||
);
|
||||
|
||||
return floor != null;
|
||||
|
||||
// Springen
|
||||
private void jump()
|
||||
{
|
||||
if (Greenfoot.isKeyDown("space") && onGround)
|
||||
{
|
||||
verticalSpeed = -jumpStrength;
|
||||
onGround = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Schwerkraft und Boden-Kollision
|
||||
private void fall()
|
||||
{
|
||||
verticalSpeed += gravity;
|
||||
|
||||
int newY = getY() + verticalSpeed;
|
||||
|
||||
// Prüfen, ob wir auf Ground landen
|
||||
setLocation(getX(), newY);
|
||||
|
||||
Actor ground = getOneIntersectingObject(Ground.class);
|
||||
|
||||
if (ground != null)
|
||||
{
|
||||
// Wenn wir fallen, stehen wir auf dem Ground
|
||||
if (verticalSpeed >= 0)
|
||||
{
|
||||
int groundTop = ground.getY() - ground.getImage().getHeight() / 2;
|
||||
int characterHalfHeight = getImage().getHeight() / 2;
|
||||
|
||||
setLocation(getX(), groundTop - characterHalfHeight);
|
||||
|
||||
verticalSpeed = 0;
|
||||
onGround = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
onGround = false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean collision(){
|
||||
if (getIntersectingObjects(Projectile.class).size()>0)
|
||||
{
|
||||
Greenfoot.setWorld(new GameOverWorld());
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user