Updating the jump in game
        Posted  
        
            by 
                Luka Tiger
            
        on Game Development
        
        See other posts from Game Development
        
            or by Luka Tiger
        
        
        
        Published on 2013-09-23T17:53:36Z
        Indexed on 
            2013/10/23
            22:07 UTC
        
        
        Read the original article
        Hit count: 306
        
I am making a Java game and I want my game to run the same on any FPS so I'm using time delta between each update. This is the update method of the Player:
    public void update(long timeDelta) {
        //speed is the movement speed of a player on X axis
        //timeDelta is expressed in nano seconds so I'm dividing it with 1000000000 to express it in seconds
        if (Input.keyDown(37))
            this.velocityX -= speed * (timeDelta / 1000000000.0);
        if (Input.keyDown(39))
            this.velocityX += speed * (timeDelta / 1000000000.0);
        if(Input.keyPressed(38)) {
            this.velocityY -= 6;
        }
        velocityY += g * (timeDelta/1000000000.0); //applying gravity
        move(velocityX, velocityY); /*this is method which moves a player 
                                        according to velocityX and velocityY, 
                                        and checking the collision
                                    */
        this.velocityX = 0.0;
    }
The strange thing is that when I have unlimited FPS (and update number) my player is jumping about 10 blocks. It jumps even higher when the FPS is increasing. If I limit FPS it is jumping 4 blocks. (BLOCK: 32x32) I have just realized that the problem is this:
if(Input.keyPressed(38)) {
    this.velocityY -= 6;
}
I add -6 to velocityY which increases player's Y proportionally to the update number and not to the time.
But I don't know how to fix this.
© Game Development or respective owner