Ich mache ein Plataform-Spiel und jetzt mache ich die Spielerbewegungen. Wenn ich 'A' drücke, bewegt sich der Spieler nach links (player.moveLeft()); Wenn ich 'D' drücke, bewegt sich der Spieler zur rechten Seite (player.moveRigth()); und wenn ich 'W' drücke, springt der Spieler (player.jump()).Wie stoppen Sie die Impulse und Kräfte eines Körpers, aber nicht die Schwerkraft in libGDX (Box2D)?
public void moveLeft() {
if(Gdx.input.isKeyPressed(Keys.A) &&
!Gdx.input.isKeyPressed(Keys.D) &&
body.getLinearVelocity().x > -MAXIMUM_VELOCITY){
left = true;
body.applyLinearImpulse(-3, 0, body.getPosition().x, body.getPosition().y, true);
}else if(Gdx.input.isKeyPressed(Keys.D) &&
Gdx.input.isKeyPressed(Keys.A) &&
!inTheAir){
stop();
}else if(!Gdx.input.isKeyPressed(Keys.A) &&
!Gdx.input.isKeyPressed(Keys.D) &&
!inTheAir){
stop();
}
}
public void moveRigth() {
if(Gdx.input.isKeyPressed(Keys.D) &&
!Gdx.input.isKeyPressed(Keys.A) &&
body.getLinearVelocity().x < MAXIMUM_VELOCITY){
rigth = true;
body.applyLinearImpulse(3, 0, body.getPosition().x, body.getPosition().y, true);
}else if(Gdx.input.isKeyPressed(Keys.D) &&
Gdx.input.isKeyPressed(Keys.A) &&
!inTheAir){
stop();
}else if(!Gdx.input.isKeyPressed(Keys.D) &&
!Gdx.input.isKeyPressed(Keys.A) &&
!inTheAir){
stop();
}
}
public void stop(){
body.setLinearVelocity(0, 0);
body.setAngularVelocity(0);
}
public void jump(){
if(!inTheAir && Gdx.input.isKeyPressed(Keys.W)){
inTheAir = true;
body.setLinearVelocity(0, 0);
body.setAngularVelocity(0);
body.applyLinearImpulse(0, 7, body.getPosition().x, body.getPosition().y, true);
}
}
Es funktioniert, aber ich habe ein Problem: wenn ich ‚A‘ oder ‚D‘ drücken, bevor Sie springen, und wenn der Spieler springt und ich die Taste loslassen, hält der Spieler bewegt. Wie kann ich es reparieren?? Bitte hilf mir!!
Es hat funktioniert, vielen Dank !!! : D – Lordeblader