Seite 2 von 2
Verfasst: 11.12.2004 15:40
von Swappy
nur so nebenbei.. aba ich glaube meine eigentlicht Frage gerät in Vergessenheit...

Verfasst: 11.12.2004 17:10
von Zaphod
wieso, deine frage wurde doch beantwortet: geht nicht, es sei denn du findest raus wie man es selbst macht, was ziemlich kompliziert werden dürfte.
Verfasst: 17.12.2004 13:20
von estate
Gibt es den schon Egoshooter in Pb? (Mit OGRE)
Wenn nicht, dann muss es bestimmt einen Grund haben.
Verfasst: 17.12.2004 20:11
von Swappy
Keinw Ahnung ob es schon welche gibt, hab noch von keinem gehört... Aber ich guck mal ob ich was finde.
Verfasst: 21.12.2004 17:24
von estate
Ich denke wenn es schon Ego shooter geben würde, währen sie sicherlich bekannter.
Vielleicht liegt der Egoshootermangel and der Konkurenz Blitz3d.
Verfasst: 27.12.2004 14:55
von hardfalcon
Es gibt zwar keinen Egoshooter in PB, aber andere 3d-spiele in PB, die auch collision-detection benutzen. z.b. UFO Onslaught von The_Pharao...
cya
Pascal
Schwere Sache!
Verfasst: 29.12.2004 16:57
von osta
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.
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
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