2016-08-03 6 views
0

Die Anwendung der Gravitation auf die Physik ist einfach, Sie müssen nur einen Vector2 erstellen und den horizontalen und vertikalen Wert der Schwerkraft einstellen. Was ist, wenn ich ein Top-Down-2D-Spiel mit Schwerelosigkeit erstellen und nur die Schwerkraft auf einen bestimmten Körper wie eine Projektilbewegung eines Pfeils anwenden möchte. Natürlich ist es einfach, eine Projektilbewegung zu haben, wenn Sie Ihre Welt zuerst auf eine Schwerkraft einstellen.Wie man die Schwerkraft auf einen bestimmten Körper anwendet

float GRAVITY_EARTH = -9.8f; 
Vector2 gravity = new Vector2(0, GRAVITY_EARTH); 
World world = new World(gravity, true); 

Box2D Körper Klasse hat eine Methode, die die Schwerkraft aufzuheben umzukehren, aber ich will es nicht jedes Mal verwenden, genau wie in dem folgenden Codebeispiel.

body.setGravityScale(0); // set 0 to cancel the gravity, and set -1 to reverse the gravity 

Aber ich möchte vielseitig sein, möchte ich nur die Schwerkraft auf bestimmte Körper anzuwenden. Zum Beispiel verwende ich die Methode setLinearVelocity, um den Körper an ein bestimmtes Ziel zu verschieben. Wenn nun die Welt die Gravitation y von -9.8f hat, wird sie automatisch eine Projektilbewegung haben.

Vector2 initialVelocity = targetPoint.sub(originPoint).nor(); 
initialVelocity.scl(speed); // to apply constant speed 
body.setLinearVelocity(initialVelocity); 

Ich versuchte, die Anfangsgeschwindigkeit von y auf -9,8 zu erhöhen, um die Schwerkraft anzuwenden. Aber es hat nicht funktioniert, was fehlt mir?

initialVelocity.y += -9.8f; 
body.setLinearVelocity(initialVelocity); 

// or 

body.applyForce(initialVelocity, body.getWorldCenter(), true); 

Antwort

1

Die Schwerkraft ist eine Kraft, keine Geschwindigkeit. Aufruf etwas wie

Vector2 gravity = new Vector2(0, GRAVITY_EARTH); 
body.applyForceToCenter(gravity, true); 

in der Sprungfunktion sollte es tun. Bitte beachten Sie, dass Sie die Kraft bei jedem Frame anwenden müssen, da sie gelöscht sind.

1

Sie müssen die Gegenkraft in jedem Schritt anwenden, um die Schwerkraft aufzuheben.

Finden Sie die Antworten von this question für andere Optionen.

Verwandte Themen