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