How can i make a player have to go back down after he jumps? (for my game runner)


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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 } } } } |
1 2 3 4 5 6 | // 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); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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) } } } } |