Note that there are some explanatory texts on larger screens.

plurals
  1. POjava slick2D simulate gravity for jumping
    primarykey
    data
    text
    <p>So I made a little game in java with slick2D, but I want my character to jump. Now I have this: </p> <pre><code>if (container.getInput().isKeyPressed(Input.KEY_UP) &amp;&amp; !jumping) { verticalSpeed = -1.0f * delta;//negative value indicates an upward movement jumping = true; } if (jumping) { verticalSpeed += .007f * delta;//change this value to alter gravity strength } playerY += verticalSpeed; playerPoly.setY(playerY); </code></pre> <p>Well that makes my sprite jump and fall down...for ever. So how can you make it stop from falling when it hits the ground? I tried this: </p> <pre><code>if (entityCollisionWith()){ jumping = false; } </code></pre> <p>But it doesn't work :(</p> <p>my code with jumping:</p> <pre><code>import org.newdawn.slick.Animation; import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.BasicGame; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.Image; import org.newdawn.slick.Input; import org.newdawn.slick.SlickException; import org.newdawn.slick.SpriteSheet; import org.newdawn.slick.geom.Polygon; import org.newdawn.slick.tiled.TiledMap; public class Game extends BasicGame { public BlockMap map; Image player = null; float playerX = 320; float playerY = 288; float scale = 1f; private Polygon playerPoly; boolean jumping = false; float verticalSpeed = 0.0f; public Game() { super("my game"); } public void init(GameContainer container) throws SlickException { map = new BlockMap("data/Map01.TMX"); player = new Image("data/rightSprite.png"); playerPoly = new Polygon(new float[]{ playerX,playerY, playerX+17,playerY, playerX+17,playerY+48, playerX,playerY+48 }); } public void update(GameContainer container, int delta) throws SlickException { if (container.getInput().isKeyDown(Input.KEY_LEFT)) { playerX-=0.15; playerPoly.setX(playerX); if (entityCollisionWith()){ playerX+=0.15; playerPoly.setX(playerX); } } if (container.getInput().isKeyDown(Input.KEY_RIGHT)) { playerX+=0.15; playerPoly.setX(playerX); if (entityCollisionWith()){ playerX-=0.15; playerPoly.setX(playerX); } } if (container.getInput().isKeyPressed(Input.KEY_UP) &amp;&amp; !jumping) { verticalSpeed = -1.0f * delta;//negative value indicates an upward movement jumping = true; } if (entityCollisionWith()){ jumping = false; verticalSpeed = -1.1f; verticalSpeed = 0; } if (jumping) { verticalSpeed += .01f * delta;//change this value to alter gravity strength } playerY += verticalSpeed; playerPoly.setY(playerY); if (entityCollisionWith()){ jumping = false; verticalSpeed = 0; } } public boolean entityCollisionWith() throws SlickException { for (int i = 0; i &lt; BlockMap.entities.size(); i++) { Block entity1 = (Block) BlockMap.entities.get(i); if (playerPoly.intersects(entity1.poly)) { return true; } } return false; } public void render(GameContainer container, Graphics g) { BlockMap.tmap.render(0, 0); player.draw(playerX, playerY, scale); g.draw(playerPoly); } public static void main(String[] argv) throws SlickException { AppGameContainer container = new AppGameContainer(new Game(), 640, 480, false); container.start(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload