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

23.05.2015, 15:36

C++ Gegner in Richtung des Spielers rotieren

Hallo liebe Spieleprogrammierer

Ich will dass die Gegner sich zum Spieler drehen wenn er zb. links von den Gegnern ist oder unten links etc.
Ich programmiere das ganze in der SFML.

Hat jemand da eine Lösung?

Freundlich Grüsst SlyGamer72HD

2

23.05.2015, 15:49

Das Stichwort heißt atan() ;)
Such hier mal im Forum, diese Frage wurde bereits sehr oft gestellt.

3

23.05.2015, 16:02

Danke für die schnelle Antwort.
Ich werde es mal suchen.
Eine Frage noch. Es gibt ja mehrere Atans also atan, atan2 und atan3. Bräuchte ich atan2 weil ich übergebe ja 2 Koordinaten oder wie ist das?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

4

23.05.2015, 16:45

Jup atan2.

5

23.05.2015, 16:46

Ok danke viel mals

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

6

23.05.2015, 17:08

Nur ums erwähnt zu haben, du kannst auch deine Modelmatrix so aufsetzten dass die Hochachse gleich Richtung Spieler orientiert ist, ist evt. einfacher (Vektor zwischen Spieler <-> Gegner, Rechtsachse bestimmen und in eine 3x3 Matrix einsetzten).

7

23.05.2015, 17:11

Wie meinst du das?
Könntest du ein kleines Beispiel machen?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

8

23.05.2015, 17:52

Wenn du die Rotation über einen Winkel steuerst erstellt dir SFML (vermutlich, ich habs noch nie benutzt) eine Rotationsmatrix. Dazu wird dann per sin/cos eine 2x2 Matrix erstellt. Sinn des ganzen ist es ein gedrehtes Koordinatenkreuz zu haben, wenn du so willst. Also um 45° nach links zu rotieren "zeight" die Hochachse (y-Achse) nicht mehr gerade nach oben, sondern nach schräg links oben. Wenn du dein Objekt anhand der Hochachse ausrichtest (also "vorne" ist oben), kannst du das ausnutzen und direkt den Vektor vom Spieler zum Gegner (bzw. andersrum) ausrechnen und in die Matrix schreiben. Weil ein Koordinatenkreuz zwei Achsen hat rechnest du noch die "Rechtsachse", also die x-Achse aus. Das kannst du erreichen in dem du x und y der Hochachse tauschst und (ich glaube es war so, müsste ich auch nachgucken) x negierst.

1. Vektor vom Gegner zum Spieler bestimmen
2. Vektor normalisieren
3. Rechtsachse aus dem Vektor bestimmen
4. beide in die Modelmatrix schreiben
5. rendern

Werbeanzeige