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