Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  [2D Jumping Sprite Animation [FIXED]]  (Read 972 times)
0 Members and 1 Guest are viewing this topic.
Offline GabrielBailey74

Full Member
**

Posts: 157
Medals: 2


Owner of Elite Demons R.I.P


« on: 2012-01-11 15:43:30 »

So as the title says i'm triyng to create a simple jumping animation for my 2d RPG, instead of just having left,right,up,down movements i'd like left, right, and jump.

At the moment the only variables to tell/change a players position are:
public int absX;
public int absY;

Now I know i'm going to need some other variables + forumlas, such as Dx, Dy, but if someone could point me in the direction on how to go on this, it would be much appreciated.
At the moment i just made a simple method called jump(), which (absY--) = (Up actually), 15 times, and when that characters height has raised 15 times, than i would lower it back to -15, (flat at the floor), so it looks like a animation.
But I really don't like the way that that looks O_o.
If someone could help me please! Shocked

Offline ra4king

JGO Kernel
*****

Posts: 3131
Medals: 195


I'm the King!


« Reply #1 on: 2012-01-11 17:43:55 »

Well the variables that are needed are gravity and yVelocity.
Gravity is a constant which you should tweak to your heart's content to get it right. Let's make gravity 500 pixels per second.
The Y velocity will be 0 when the player is not jumping, but as soon as you hit the spacebar, you set it to a desired vertically moving speed. Let's go with -300 pixels per second as the initial velocity.

Now every tick, you will add the yVelocity multiplied with the delta to the Y variable. Then you will add the gravity multiplied with the delta to the yVelocity. This is applying gravity your velocity and then applying the velocity to your position.

BTW: You should change absX and absY to doubles.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
private final double gravity = 500;

public void update(long deltaTime) {
    double delta = deltaTime / 1000.0;
   
    if(spaceBarIsPressed)
        yVelocity = -300; //Going up 300 pixels per second.
   
    absY += yVelocity * delta;
    yVelocity += gravity * delta;
}

Offline GabrielBailey74

Full Member
**

Posts: 157
Medals: 2


Owner of Elite Demons R.I.P


« Reply #2 on: 2012-01-11 17:56:46 »

Ah, I figured it out, perfectly.
Thanks m8, thread closed.

Games published by our own members! Go get 'em!
Offline GabrielBailey74

Full Member
**

Posts: 157
Medals: 2


Owner of Elite Demons R.I.P


« Reply #3 on: 2012-01-21 19:16:02 »

Thanks about the BTW on turning my ints to doubles for player positioning, just now looking into deeper detail on a Double, thanks m8.

Offline ra4king

JGO Kernel
*****

Posts: 3131
Medals: 195


I'm the King!


« Reply #4 on: 2012-01-21 19:18:20 »

Glad to help Smiley

Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.092 seconds with 20 queries.