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) } } } }