Brauche hilfe bei 3D-Spiel
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
Schwere Sache!
Hi,
Habe vor nem Jahr auch angefangen ein Spiel in 3d-pb zu basteln. Gibt sehr viele Probleme. Aber wir könnten uns ja zusammen tun und ein Beispiel machen, damit es endlich eins gibt. Tipps:
Kollision:
Du musst nicht das BSP-Format auseinandernehmen, um eine Kollision zu stoppen, denn wie du vielleicht Gemerkt hast, gibt es bei jeder BSP-Map eine unkompilierte *.map-datei, die alle faces und deren Koordinaten enthält. Damit könnte man leicht einige Prozeduren schreiben, aber ich hab's bisher noch nicht geschafft.
Schiessen:
Wenn du nachher Schusswaffen einbauen möchtest, musst du wissen, wohin die Kamera schaut, um das Geschoss richtig fliegen zu lassen. Der Pb-Befehl RotateCamera() ist fehlerhaft (eine Drehung hat mehr wie 360°) und es gibt auch keine CameraRotation() befehle, um die Winkel rauszukriegen. Ich habe desshalb meine Eigene Prozedur geschrieben.
Sonstige Sachen habe ich auch schon gelöst, bin aber noch nicht fertig und würde mich freuen, wenn mir jemand eine Kollisionserkennung schreiben würde.
cu
OstA
Habe vor nem Jahr auch angefangen ein Spiel in 3d-pb zu basteln. Gibt sehr viele Probleme. Aber wir könnten uns ja zusammen tun und ein Beispiel machen, damit es endlich eins gibt. Tipps:
Kollision:
Du musst nicht das BSP-Format auseinandernehmen, um eine Kollision zu stoppen, denn wie du vielleicht Gemerkt hast, gibt es bei jeder BSP-Map eine unkompilierte *.map-datei, die alle faces und deren Koordinaten enthält. Damit könnte man leicht einige Prozeduren schreiben, aber ich hab's bisher noch nicht geschafft.
Schiessen:
Wenn du nachher Schusswaffen einbauen möchtest, musst du wissen, wohin die Kamera schaut, um das Geschoss richtig fliegen zu lassen. Der Pb-Befehl RotateCamera() ist fehlerhaft (eine Drehung hat mehr wie 360°) und es gibt auch keine CameraRotation() befehle, um die Winkel rauszukriegen. Ich habe desshalb meine Eigene Prozedur geschrieben.
Code: Alles auswählen
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
cu
OstA
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.
Nur heute geht's grad nicht.