Algorithmus fuer einen "Seitschritt"
-
Hallo.
Aus den ganzen Ego-Shootern - und aus ziemlich vielen anderen Spielen ja auch - kennt man ja diese Seitschritte nach links und rechts. Wie berechne ich den Bewegungsvektor dafuer, wenn ich die Position der Camera und den Referenzpunkt der Camera habe??? Ich komme da irgendwie nicht darauf.
Danke fuer alle Antworten.
MfG Aoeke<edit>Oh gehoert das vielleicht ins Mathematik-Forum? Wenn ja bitte verschieben und sorry :D</edit>
-
Kreuzprodukt:
Wenn a und b zwei Vektoren im |R^2 sind, dann ist a x b ein Vektor, der senkrecht auf beiden steht, und dessen Länge gleich dem Produkt der beiden Beträge mal dem Sinus des eingeschlossenen Winkels ist. Das dürfte der allgemeinste Ansatz sein, dieses Problem zu lösen ...
Falls das Spiel nicht Voll-3D (wie bspw. ein Weltraumshooter) ist, vereinfacht sich das ganze nochmal extrem, weil der nach-oben-Vektor konstant ist.
-
Hi,
i.d.R. hat man das rotierte Koordinatensystem der Kamera eh gespeichert, sprich den Richtungsvektor, den Hochvektor und den Rechtsvektor. Für eine Bewegung nach vorn addiert man den Richtungsvektor mal der Geschwindigkeit zu der Position hinzu.
Analog macht man es für eine Bewegung zur Seite. Nur nimmt man dort den Rechtsvektor und verwendet für den Schritt nach links eine negative Geschwindigkeit.
Ciao,
Stefan
-
@Stefan Zerbst: Ich glaube deine Variante trifft ja nur zu, wenn man die Welt skaliert und rotiert, oder nicht? Ich jedenfalls bewege und drehe ja die Kamera.
@Bashar: Deins klingt ja schon ganz interessant, nur kann ich dem nicht folgen...
Kannst du das vielleicht noch mal "etwas einfacher" erklaeren? Vielleicht mit einer Beispielgleichung?
<ausrede>Ich bin erst 10. Klasse! :D</ausrede>
MfG Aoeke
-
-
Hi,
streng genommen kannst Du die Kamera gar nicht bewegen. Intern wird immer die Welt bewegt. Aber aus genau diesem Grund dass man die Kamera bewegt speichert man ja die rotierten Achsen der Kamera, so dass sie immer korrekt in der Welt ausgerichtet sind.
Ciao,
Stefan
-
Aoeke schrieb:
Hallo.
Aus den ganzen Ego-Shootern - und aus ziemlich vielen anderen Spielen ja auch - kennt man ja diese Seitschritte nach links und rechts. Wie berechne ich den Bewegungsvektor dafuer, wenn ich die Position der Camera und den Referenzpunkt der Camera habe??? Ich komme da irgendwie nicht darauf.
Danke fuer alle Antworten.
MfG Aoeke<edit>Oh gehoert das vielleicht ins Mathematik-Forum? Wenn ja bitte verschieben und sorry :D</edit>
du hast sicherlich eine camera matrix
also multiplizierst du die cameramatrix mit dem vektor nach rechts
z.b.
CVector MoveRight = CameraMatrix.Inv() * CVector(1.f,0.f,0.f,0.f);
das kannste auch mit jeder anderen richtung machen (also wenn du den aktuellen vector nach oben suchst, oder nach vorne.
könnte sein, dass du die normale cameramatrix nehmen mußt, je nachdem wie du das handhabst.
rapso->greets();
-
Ich habe die Loesung jetzt... *JUHU*
Ich hatte vergessen, dass ich den UpVector ja auch habe und hatte mich jetzt gefragt, von welchen beiden ich das Kreuzprodukt bilden sollte... Naja, dann hatte ich es schon fast komplett und dann ist mir aufgefallen, dass ich mir so eine Funktion fuer einen Seitschritt mal vor einer Ewigkeit von irgendeinem Tutorial abgeschrieben hatte, aber nie wusste was das war...
Jedenfalls funktioniert es jetzt..
Danke fuer alle Antworten.
MfG Aoeke
-