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

30.12.2010, 01:48

tbObject: AddRotationAbs

Ich habe ein kleines Problem mit der Kamera.

Ich möchte, dass wenn ich auf A drücke, die Kamera nach links schwenkt, bei D nach rechts, bei W nach oben und bei S nach unten. Das WASD-System halt.

Dabei soll sich die Kamera bei Links und Rechts auf der absoluten Y-Achse drehen. (global)
Bei Oben und Unten soll sie sich auf der relativen X-Achse drehen. (lokal)

Also bedeutet dies im übertragenen Sinne, dass ich meinen Kopf nach oben und unten neigen kann, und mich dabei beliebig mit meinem Körper im Kreis drehen kann.

Ich versuchte das dann mit den Funktionen von tbObject zu lösen.
Die Funktion AddRotationAbs() soll zwar angeblich eine Rotation auf der absoluten Achse bewirken, tut dies aber nicht und dreht sich auf einer willkürlichen Achse. (ausser, wenn ich den Höhenwinkel noch nicht verändert habe). Die Funktion AddRotationRel() funktioniert hingegen genau, wie ich es von ihr erwartet habe.

Hier der Code-Ausschnitt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
//UP 
g_Camera.AddRotationRel(tbVector3(pfButtons[TB_KEY_W] * -4.0f * fNumSecsPassed, 0.0f, 0.0f)); 
//DOWN 
g_Camera.AddRotationRel(tbVector3(pfButtons[TB_KEY_S] * 4.0f * fNumSecsPassed, 0.0f, 0.0f)); 
//LEFT 
g_Camera.AddRotationAbs(tbVector3(0.0f, pfButtons[TB_KEY_A] * -4.0f * fNumSecsPassed, 0.0f)); 
//RIGHT 
g_Camera.AddRotationAbs(tbVector3(0.0f, pfButtons[TB_KEY_D] * 4.0f * fNumSecsPassed, 0.0f));

Besten Dank
Sydon

2

31.12.2010, 12:23

Ich habe jetzt mal weiter gesucht und herausgefunden, dass die Funktion "AddRotationRel" im gesamten Quellcode von Galactica an keiner Stelle benutzt wird. Ist es möglich, dass die Funktion einfach einen Fehler drinn hat?

Naja, wenn ich wieder Zeit zum Programmieren habe, schau ich sie mir mal an.