Hi,
I can let my object jump vertically but he comes down immediately and i want to let him jump more in a curve ( over the X-as ). What is a short code for adding this?
Thx
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class mannetje here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class mannetje extends Actor
{
private int speed = 3; //snelheid( in pixels ) waarmee het mannetje horizontaal loopt.
private int vSpeed = 0; //V staat voor verticale speed, dus springen en vallen.
private int acceleration = 1; //het mannetje gaat hierdoor vallen zoals bij de zwaartekracht.
private boolean jumping;
private int jumpStrength = 16;
private int frame = 1;
private int animationCounter = 0;
private GreenfootImage manRechts2 = new GreenfootImage("manRechts2.png");
private GreenfootImage manRechts3 = new GreenfootImage("manRechts3.png");
private GreenfootImage manRechts4 = new GreenfootImage("manRechts4.png");
private GreenfootImage manRechts5 = new GreenfootImage("manRechts5.png");
private GreenfootImage manRechts6 = new GreenfootImage("manRechts6.png");
private GreenfootImage manLinks2 = new GreenfootImage("manLinks2.png");
private GreenfootImage manLinks3 = new GreenfootImage("manLinks3.png");
private GreenfootImage manLinks4 = new GreenfootImage("manLinks4.png");
private GreenfootImage manLinks5 = new GreenfootImage("manLinks5.png");
private GreenfootImage manLinks6 = new GreenfootImage("manLinks6.png");
public void act() // controleert mijn toetsenbord inputs en doe de act precies.
{
checkKeys();
vallen();
checkVallen();
animationCounter++;
}
public void checkKeys()
{
if (Greenfoot.isKeyDown("left") ) // Als ik de linker keyarrow indruk gaat de afbeelding van het man-links laden en de methode moveLeft aanroepen
{
moveLeft();
}
if (Greenfoot.isKeyDown("right") ) // Als ik de rechter keyarrow indruk gaat de afbeelding van het man-rechts laden en de methode moveRight aanroepen
{
moveRight();
}
if (Greenfoot.isKeyDown("space") && jumping == false){ // Het laten springen van het mannetje.
jump();
}
}
public void checkVallen() // Controleert of hij op de grond staat, en anders valt hij.
{
if(onGround()) {
vSpeed = 0;
}
else {
vallen();
}
}
public boolean onGround() /* De plaats waar het object( mannetje ) zich gaat plaatsen */
{
Actor ground = getOneObjectAtOffset (0, getImage().getHeight() / 2, Hoofdplatform.class);
if(ground == null)
{
jumping = true;
return false;
}
else
{
moveToGround(ground);
return true;
}
}
public void moveToGround(Actor ground)
{
int groundHeight = ground.getImage().getHeight();
int newY = ground.getY() - (groundHeight /2 + getImage().getHeight())/2;
setLocation(getX(), newY);
jumping = false;
}
public void vallen() // de speed staat nu bij de Y-as wat verticaal is
{
setLocation(getX(), getY() + vSpeed);
if(vSpeed <=9)
{
vSpeed = vSpeed + acceleration; // hierdoor gaat het mannetje realistischer vallen( zwaartekracht en niet zwevend )
}
jumping = true;
}
public void jump(){ // Het mannetje laten springen( jumpStrength = hoe hoog hij kan springen ).
vSpeed = - jumpStrength;
jumping = true;
}
public void moveLeft() // de speed staat bij de X-as wat horizontaal is
{
setLocation (getX() - speed, getY());
if(animationCounter %5 == 0)
{
animateLeft();
}
}
public void moveRight() // naar rechts bewegen + de animatie van het bewegen.
{
setLocation (getX() + speed, getY());
if(animationCounter %5 == 0)
{
animateRight();
}
}
public void animateLeft() // naar links bewegen + de animatie van het bewegen per afbeelding.
{
if(frame == 1)
{
setImage(manLinks2);
}
else if(frame == 2)
{
setImage(manLinks3);
}
else if(frame == 3)
{
setImage(manLinks4);
}
else if(frame == 4)
{
setImage(manLinks5);
}
else if(frame == 5)
{
setImage(manLinks6);
frame = 1;
return;
}
frame++;
}
public void animateRight() // naar rechts bewegen + de animatie van het bewegen per afbeelding.
{
if(frame == 1)
{
setImage(manRechts2);
}
else if(frame == 2)
{
setImage(manRechts3);
}
else if(frame == 3)
{
setImage(manRechts4);
}
else if(frame == 4)
{
setImage(manRechts5);
}
else if(frame == 5)
{
setImage(manRechts6);
frame = 1;
return;
}
frame++;
}
}
