Java libGdx Sprung mit Gravitation mit Hilfe von Vector2?

Ich habe mit dieser Anleitung :

// Just sample values Vector2 gravity = new Vector2(0, -5); Vector2 position = new Vector2(10, 10); Vector2 velocity = new Vector2();

  // Test if the jump key (or what ever you like) is pressed)
  boolean jump = false;
  boolean canJump = true;
  // Test if the player stands on the ground every loop
  boolean standOnGround = true;
  
  
  /*
   * In your update method
   */
  
  // Add the gravity to the velocity
  velocity.add(gravity);
  
  // If the jump key is pressed and jumping is allowed
  if (jump && canJump) {
     // Add an upward velocity
     velocity.add(0, 20);
     // Disallow jumping, so you can't jump in mid air.
     canJump = false;
  }
  // If the player stands on the ground
  else if (standOnGround) {
     // You can't fall down when you stand on a ground
     velocity.y = 0;
     // When you stand on a ground you can jump again
     canJump = true;
  }
  
  // Limit fall speed
  if (velocity.y < -20) {
     velocity.y = -20;
  }
  
  // Add the velocity to the players position
  position.add(velocity);

Verucht das auf mein Game zu Übertragen da mit meine Jump methode nicht gefiel. ich bekomm keiner fehler meldung ich komm ins game rein alles geht nur er springt nicht . ich benutze ein Sprite

Die vektoren hab ich so gemacht.

    geschwindigkeit = new Vector2();
    position = new Vector2(sprite.getX(),sprite.getY());
    Gravity = new Vector2(0,-5);

So prüfe ich ob mein sprite auf dem Boden ist.

if (position.y >= 1){ standOnGround = false;

    } else {
        standOnGround = true;
    }

Und das ist meine Update methode wie beschrieben.

public void Update(){

        geschwindigkeit.add(Gravity);
    
    if(Gdx.input.isKeyJustPressed(Input.Keys.SPACE)){ 
        jump = false;
        canJump = true;
    }
    if(jump== false && canJump == true){
        
        geschwindigkeit.add(0,-20);
        canJump = false;
        
    } else if (standOnGround ){
        geschwindigkeit.y = 0;
        canJump = true;
    }
    
    if(geschwindigkeit.y <-20){
        geschwindigkeit.y = -20;
    }
        
position.add(geschwindigkeit);
}

Wie gesagt alles geht ohne fehlermeldung an im code ist auch kein Fehler , nur das ding macht nicht sein Job.

...zum Beitrag

Für den Fall das jemand ein Ähnliches Problem hat Habe ich mir  eine alternative  ausgedacht.


Zu dem muss ich sagen das ich mein hintergrund bewege und Mein Sprite an einer stelle lasse


Für die schwerkraft hab ich eine methode gschrieben die sobald mein Sprite über Position y 0 ist ich ihn kontinuirlich fallen lassen

//

public boolean fall(){
if (sprite.getY() > 1){
sprite.translateY(-schwerkraft+2);
fallen = true;
}else {

fallen = false;
}
return fallen;
}


Ein Boolean um zu checken ob ich im Sprung bin oder nicht. und ein Boolean der überprüft ob ich nach Rechts laufe oder nicht (oder Nicht kann man auch als nach links laufen sehen  rechts = false;  )


if(sprite.getY() < (1080-img_height)){



if(Gdx.input.isKeyJustPressed(Input.Keys.SPACE) && im_sprung == false&& fallen == false){
im_sprung = true;
pressToWalk = false;
}

if( im_sprung == true)

if (sprite.getY()< 500){
isOnAir = true;

//
new_pos_y muss größer als die gravitation sein


sprite.translateY(new_pos_y);
new_pos_y += 10;


}
else{
im_sprung = false;
new_pos_y = 10;
pressToWalk = true;
fallen = true;
}
}
//  wenn ich nach rechts schaue soll der Hintergrund  beim Springen und Fallen  - speed genomen werden  gb_pos_x steht für GameBackground_position_x  das wurde in der render methode festgelegt mit batch.draw(gameBackground, gb_pos_x, 0);

if(im_sprung == true&& rechts == true){
gb_pos_x -= speed;


} if (rechts == true && fallen == true){
gb_pos_x -= speed;

}

if(im_sprung == true&& rechts == false){
gb_pos_x += speed;



} if (rechts == false && fallen == true){
gb_pos_x += speed;

}
}

...zur Antwort