How can i make a player have to go back down after he jumps? (for my game runner)
import greenfoot.*
public class Jumper extends Actor
{
private int ySpeed;
public Jumper()
{
}
public void act()
{
int groundLevel = getWorld().getWidth() - getImage().getHeight()/2;
boolean onGround = (getY() == groundLevel);
if (!onGround) // in middle of jump
{
ySpeed++; // adds gravity effect
setLocation(getX(), getY()+ySpeed); // fall (rising slower or falling faster)
if (getY()>=groundLevel) // has landed (reached ground level)
{
setLocation(getX(), groundLevel); // set on ground
Greenfoot.getKey(); // clears any key pressed during jump
}
}
else // on ground
{
if ("space".equals(Greenfoot.getKey())) // jump key detected
{
ySpeed = -15; // add jump speed
setLocation(getX(), getY()+ySpeed; // leave ground
}
}
}
}// add a semi-colon at the end of line 1 import greenfoot.*; // change 'getWidth()' to 'getHeight()' in line 13 int groundLevel = getWorld().getHeight() - getImage().getHeight()/2; // add the missing close parenthesis at the end of line 30 setLocation(getX(), getY()+ySpeed);
import greenfoot.*;
public class Jumper extends Actor
{
private int ySpeed;
private int apexTimer;
public Jumper()
{
}
public void act()
{
int groundLevel = getWorld().getHeight() - getImage().getHeight()/2;
boolean onGround = (getY() == groundLevel);
if (!onGround) // in middle of jump
{
if (ySpeed == 0 && apexTimer > 0) apexTimer--; // run apex timer
if (ySpeed == 0 && apexTimer > 0) return; // apex timer still running
ySpeed++; // adds gravity effect
setLocation(getX(), getY()+ySpeed); // fall (rising slower or falling faster)
if (getY()>=groundLevel) // has landed (reached ground level)
{
setLocation(getX(), groundLevel); // set on ground
Greenfoot.getKey(); // clears any key pressed during jump
}
}
else // on ground
{
if ("space".equals(Greenfoot.getKey())) // jump key detected
{
ySpeed = -15; // add jump speed
setLocation(getX(), getY()+ySpeed); // leave ground
apexTimer = 100; // set apex timer (adjust value to suit)
}
}
}
}