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

SlinDev

Treue Seele

Beiträge: 142

Wohnort: Lübeck

Beruf: Programmierer

  • Private Nachricht senden

11

13.11.2015, 05:17

Wie genau kann man die Rotationsmatrix dazu verwenden? Ich dachte man multipliziert den Positionsvektor mit der Rotationsmatrix, um so den Positionsvektor zu rotieren? Und wie genau kann man nun die Rotationsmatrix dazu verwenden, um sich in eine bestimmte Richtung zu bewegen?

Indem du den Vektor der Bewegungsrichtung/Geschwindigkeit mit der Rotationsmatrix transformierst und anschließend auf deine Position addierst. Aber wenn es nur um die reine Vorwärtsbewegung geht kannst du wie schon gesagt einfach den Vektor mit (cos x, sin x) angeben, eventuell skalieren und bist fertig.

12

15.11.2015, 12:35

Aus dem Rotationswinkel kann man einen Vektor erstellen:
v = [x: cos(Rotationswinkel); y: sin(Rotationswinkel)]

Die neue Position ist dann: alte Position + v * Geschwindigkeit.
Dazu sei noch angemerkt, dass die Formel davon abhängt, in welche Richtung ein Rotationswinkel von 0 zeigt. Die Formel, wie sie oben steht, ist gültig, wenn ein Rotationswinkel von 0 nach rechts zeigt. Zeigt er stattdessen nach oben (z.B. default im Unity 2D Modus) ist x = -sin(Rotationswinkel) und y = cos(Rotationswinkel).
Es funktioniert nun endlich, aber auch nur wenn ich wie Superwayne für x den negativen Sinus nehme, also x = -sin(Rotationswinkel) und y = cos(Rotationswinkel).

Wieso ist das so?

Meine Maus schaut nach unten, dennoch ist der Rotationswinkel zu Beginn auf 0. Deshalb habe ich eine neue Variable real_rotation erstellt und sie auf 270° gesetzt und fortlaufend mit ihr gearbeitet. Warum muss ich den negativen Sinus nehmen und nicht den positiven wie zum Beispiel SlinDev vorgeschlagen hat?


(Link)


Nehme ich den positiven Sinus bewegt sich die Maus in die Richtung des roten Pfeils, also quasi zu der richtigen Richtung, nur an der y-Achse gespiegelt. Warum? Superwayne hatte es schon im darauffolgenden Beitrag erklärt, aber ich habe es leider noch nicht verstanden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ul5391« (15.11.2015, 12:54)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

15.11.2015, 13:23

Naja, das hängt alles davon ab, wie dein Koordinatensystem genau aussieht und wo deine Maus im unrotierten Zustand hinzeigt. Schau dir am besten einfach mal an, was Sinus und Kosinus genau tun...

14

15.11.2015, 13:30

Die Maus zeigt im unrotierten Zustand (Rotationswinkel = 0) nach unten, also eigentlich müsste der Winkel 270° sein.
Was Sinus und Kosinus tun weiß ich. ;(

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

15.11.2015, 13:32

Und in welche Richtungen zeigen die Achsen deines Koordinatensystems?

SlinDev

Treue Seele

Beiträge: 142

Wohnort: Lübeck

Beruf: Programmierer

  • Private Nachricht senden

16

15.11.2015, 14:24

Angenommen deine x-Achse zeigt auf deinem Bildschirm nach rechts und die y-Achse nach oben und das lokale Koordinatensystem deiner 2D Objekte sieht auch so aus nur mit Ursprung im Zentrum der Grafik, dann sollte deine Maus in der Textur in die gleiche Richtung gucken wie sie es unrotiert in deinem Projekt tun soll. Vermutlich ist das einfach nach rechts guckend, aber das musst du dir selbst überlegen und hängt auch davon ab wie du deinen Rotationswinkel bestimmst. Denn wenn dein Rotationswinkel von einem anderen Koordinatensystem ausgeht (z.B. um 90° oder 180° gedreht), dann musst du erst noch aus einem der Koordinatensysteme und das andere transformieren.

Werbeanzeige