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

24.02.2012, 21:37

Fahrzeug als tbObject

Hallo,
ich versuche schon seit längerem ein Fahrzeug (Auto) mit tbObject zu steuern, bekomme es aber leider nicht hin.
Mit AddVelocityRel(tbVector3(0.0f, 0.0f, m_fThrottle * m_fMaxAccel * fTime));
beschleunige ich das Auto, was auch funktioniert.
Mein Problem ist die Rotation. Ich weiß nicht wie ich die passende Rotation zum Lenkeinschlag bekomme. Kann mir da jemand
auf die Sprünge helfen? Sei es mit einem Stück code, oder einem gutenverständlichem Tutorial?
Wäre echt nett...

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

24.02.2012, 22:35

Ich weiß zwar nicht was ein tbObject ist ^^, aber ich mache das einfach über Vektoren. Das heißt du hast ja eine "Richtung" in die das Auto gerade schaut (als Vektor) und wenn du nun links oder rechts wenden willst addierst du zu diesem Richtungsvektor einen kleineren für den Wendekreis (ich mache das mit einem "Wendefaktor"). Danach schreib ich beide Vektor einfach in die Modelview Matrix:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
modelview.setIdentity();
    modelview.translate(m_position.x+rotationPoint.x, m_position.y+rotationPoint.y, 0);
    modelview.values[0] = m_direction.x;
    modelview.values[1] = m_direction.y;
    modelview.values[4] = -m_direction.y;
    modelview.values[5] = m_direction.x;
    modelview.rotate(-90, 0, 0, 1);
    modelview.translate(-rotationPoint.x, -rotationPoint.y, 0);


Das basiert jetzt zwar auf OpenGL, aber vielleicht kannst du das ja ebenso machen. Meine Matrizen sind column-major und [4] und [5] ist halt der Vektor der 90° zum Richtungsvektor steht.

Also als einfache Zusammenfassung: ein Vektor für die Richtung in die das Auto schaut. Diesen dann beim wenden mit einem Wendevektor addieren, normalisieren und in die Matrix einsetzen. Fertig.

Ich hoffe ich hab mich nicht zu unverständlich ausgedrückt :P

3

25.02.2012, 12:45

Danke für deine ausführliche Erklärung, nur leider habe ich Schwierigkeiten das mit der Tribase Engine umzusetzen.
Bin leider noch Anfänger, sorry.

Hat villeicht noch jemand einen Codeausschnitt der auf die Tribase Engine ausgerichtet ist?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

25.02.2012, 12:54

Bin leider noch Anfänger, sorry.

Dann solltest du dir vielleicht überlegen ob du schon so weit bist mit der Tribaseengine zu arbeiten?
Wie wärs mit der SFML und ein paar 2d Spielen?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

25.02.2012, 18:45

Deswegen ist das Buch ja auch für Fortgeschrittene;)
„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.“

Werbeanzeige