Funktionierende CameraRotate-Funktion

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
osta
Beiträge: 87
Registriert: 08.09.2004 11:48
Wohnort: Morsbach (Am Arsch der Welt)
Kontaktdaten:

Funktionierende CameraRotate-Funktion

Beitrag von osta »

Da die RotateCamera funktion bei mir nicht ganz läuft, habe ich eine eigene geschrieben, die normale Winkel benutzt und somit auch für eine Schussbestimmung nützlich ist (die habe ich auch, wenn interesse besteht):

Code: Alles auswählen

; Autor: OstA (http://thommy-oster.de.vu)
Global CameraRotationX; Global um später Schussrichtung zu bestimmen
Global CameraRotationZ

Procedure.f GSin(winkel.f) 
  ProcedureReturn Sin(winkel*(2*3.14159265/360)) 
EndProcedure 

Procedure.f GCos(winkel.f) 
  ProcedureReturn Cos(winkel*(2*3.14159265/360)) 
EndProcedure

Procedure CamRotate()
  ExamineMouse()
  x = MouseDeltaX()
  y = MouseDeltaY()
  If x <> 0
    CameraRotationZ - x
    If CameraRotationZ > 359
      CameraRotationZ = CameraRotationZ-360
    ElseIf CameraRotationZ <= 0
      CameraRotationZ = 360-CameraRotationZ
    EndIf
  EndIf
  If y <> 0
    CameraRotationX - y
    If CameraRotationX > 179
      CameraRotationX = 179
    ElseIf CameraRotationX < 1
      CameraRotationX = 1
    EndIf
  EndIf
  CameraLookAt(0, CameraX(0)-10*GCos(CameraRotationZ)*GSin(CameraRotationX), CameraY(0)-10*GSin(CameraRotationZ)*GSin(CameraRotationX), CameraZ(0)-10*GCos(CameraRotationX))
EndProcedure
man kann die Mausabfrage auch rausnehmen, und dann Variablen an die Prozedur übergeben, damit die Funktion wie die andere arbeitet. Hab sie aber so aus meinem Spiel genommen und hatte keine Lust, sie noch umzuschreiben. Das kann jeder selber machen, wie er will.
Ich hänge zu oft und zu lange vor dem PC! Ich muss dringend was an meinem Lebenswandel verändern!.......
Nur heute geht's grad nicht.