3D FPS Kamera überarbeitung

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 3D FPS Kamera überarbeitung

    Hi!
    Ich bin gerade dabei meine ganze 3D FPS Kamera zu überarbeiten und stoße dabei an mein Mathematisches limit.

    Meine Kamera wird volgendermaßen aufgebaut:

    GML-Quellcode

    1. d3d_set_projection_ext(obj_player.x +x_seite,
    2. obj_player.y +y_seite,obj_player.zview +swinging,
    3. obj_player.x+cos(obj_player.mouse_direction*pi/180) +x_seite ,
    4. obj_player.y-sin(obj_player.mouse_direction*pi/180) +y_seite,
    5. obj_player.zview+((obj_player.z_angle)*pi/180) +swinging, cos(degtorad(obj_player.mouse_direction)),
    6. -sin(degtorad(obj_player.mouse_direction)),1,
    7. 65,global.view_w/global.view_h,1,10000001);


    Volgendes über die Variablen müsst ihr wissen:
    - x_seite und y_seite sind hier eigentlich unrelevant. (kann man hier aus den code entfernen). sie dienen legendlich dazu um die kamera von der Blickrichtung nach links oder rechts zu verschieben.
    - Mouse_direction ist eine Variable die die derzeitige Blickrichtung der Kamera angibt (auf x und y ebene)
    - z_angle ist der Winkel indem der Spieler nach oben oder unten schaut. (+90 sollte ganz nach oben sein, - 90 ganz unten.)
    - swinging ist eine Variable die genauso wie die x-seite und y-seite'n Variable behandelt wird. es wird legendlich eine leichte verschiebugn auf der z-achse erwirkt. Nichts nennenswertes.

    Was nun mein Problem ist?

    Alsooo. z_angle gibt eigentlich einen Winkel an indem der Spielr nach oben oder unten schaut. Das Problem ist dass sich die Variablen nicht 1:1 überragen lassen (nicht bie dem Kameracode.)
    Sprich_ bei + 90 schaut der Spieler nicht ganz nach oben, da anscheinend der Vektor die Kamera von der Mitte immernoch weiter nach vorn schiebt.
    Weiss jemand wie ich die Kamera hier dazu bringe wirklich den Winkel den ich für die Blickrichtung (zwischen +90 und -90) übergebe auch 1:1 auf die Kamera übertragen kann? (Also das die übergebenen 90 Grad auch wirklich eine drehung auf 90 grad bedeutet.)

    2.
    Ich hatte eigentlich vor gelegentlich vor die Kamera auf der z-Achse über die 90 grad kommen zu lassen, sodass ich die Kamera um diese Achse 1 Mal durchdrehen kann. (stellt euch vor ihr macht z.:B einen Rückwärtssalto... genau den effekt meine ich.)
    Das Problem an dieser Stelle ist, dass wenn ich über einen bestimmten Wert komme (hier glaube ich 70) die Kamera auf einmal die Sicht zu Spiegeln anfängt oder gar irgendwie anders darstellt.

    Wisst ihr wie man diesen Code hier auf diese 2 Punkte ausbessern könnte?