Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

26.03.2017, 19:25

[Java] Box2d ohne Schwerkraft?

Hallo zusammen,

ich benutze Libgdx und Box2d.
Eigentlich brauche ich Box2D nur für die Kollesionserkennung und die ganzen physikalischen Eigenschaften zumin. nicht bei der Bewegung der Spieler oder Gegner.
Die sollen nämlich "klassisch" sich nur bewegen wenn eine Taste gedrückt wird um Position x oder y.Sofort stoppen wenn eine Taste nicht mehr gedrückt wird.
Leider ist Letzteres nicht machbar, auch wenn ich Gravity für die Klasse World ausschalte(auf 0 setze).

Kann man irgendwie die Bremskräfte so einstellen dass sie unrealistisch stoppen und das Objekt innerhalb kürzester Zeit abremsen dass es zumin. den Eindruck macht, das Objekt hätte sofort gestoppt?

2

26.03.2017, 19:37

Du kannst auf den bodies gravity scale auf 0 setzen. Falls du das suchst.

Ansonsten kannst du setLinearVelocity auch auf 0 setzen für schnelles stoppen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

26.03.2017, 19:41

Das ist auch mit Box2D möglich. Guck mal hier. Da wird unter anderem beschrieben wie du genau das Ergebnis erzielst.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

4

26.03.2017, 19:44

Mir fällt noch ein. Du kannst siwas wie setLinearDumping machen. Dann stoppen die auch. Aber smoother.

5

26.03.2017, 22:58

Danke schön euch.

setLinearVelocity(0)

war meine Wahl.

player.body.applyForce(new Vector2(900f, 0))

musste nur ziemlich hohe float-Werte eintragen. Ist das bedenklich?

6

27.03.2017, 06:16

Wenn du die Geschwindigkeit immer auf null setzt, bewegt sich der Körper überhaupt nicht mehr.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

27.03.2017, 06:34

Mir fällt noch ein. Du kannst siwas wie setLinearDumping machen..
Das Wort heißt Damping. Dumping wäre was anderes. :D

player.body.applyForce(new Vector2(900f, 0))

musste nur ziemlich hohe float-Werte eintragen. Ist das bedenklich?
Ja, schon. Wenn du einem Objekt eine von dir festgelegte Geschwindigkeit geben willst, dann nimm setLinearVelocity. ApplyForce ist da nicht die richtige Wahl.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

27.03.2017, 09:11

Wenn ich dich nicht hätte blueCobold. Hehe dumping X D

9

27.03.2017, 11:07

Ich benutze beides.

player.body.applyForce(new Vector2(0, 900f), player.body.getWorldCenter(), true);

Diese Zeile Code kommt dann wenn ich eine Taste drücke um die Figur auf der Y Achse nach oben zu bewegen.

Nach der Eingabe setze ich velocity auf null, das bewirkt direktes abbremsen der Figur.


Also bei mir funktioniert das wie gewünscht.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

27.03.2017, 16:31

Ist nur ziemlich unsinnig. Du weißt doch so überhaupt nicht welche Geschwindigkeit der Body erreichen wird, wenn du einfach irgendwelche Kräfte darauf wirken lässt. Machst du den Body etwas größer oder kleiner, weil dir das sinnvoller erscheint, ergibt diese Kraft plötzlich eine ganz andere Geschwindigkeit als vorher.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige