3D Collision

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
°°°
Beiträge: 59
Registriert: 05.11.2008 17:45

3D Collision

Beitrag von °°° »

Hallo

Ich versuche im Moment mein 2D Spiel in 3D umzusetzen.

Mein erstes Problem ist die Collisionsüberprüfung. Ich benutze eine Tile map nach der Die Karte erstellt wird was auch funktioniert. Wenn ich für feste Hindernise als EntityPhysicBody #PB_Entity_StaticBody wähle exestiert ja der bug das man sie nicht mit NextWorldCollision() abrufen kann. Wenn ich jetzt aber #PB_Entity_BoxBody wähle dann verschiebt sich das Hindernis bei einer Collision. Außerdem muss ich die WorldGravity auf 0 setzen damit meine Hindernise nicht herunterfallen, was unnatürliches abprallen des Spieler Entitys zur folge hat.

Was mich zu meinem Zweiten Problem bringt, denn jetzt muss ich einen Spalt zwichen den einzelnen Hindernissen lassen damit sie nicht mit untereinander collidieren. Was natürlich blöd aussieht wenn mehrere Hindernisse eine Wand bilden. Was ich jetzt gern wüsste ist was ist die kleinste maseinheit in 3d in 2d war es ein pixel. aber in 3d scheint es das nicht zu geben da ich beliebig viele komma stellen angeben kann.

Ich hoffe ihr könnt mir helfen
PureBasic 4.51

Support this Game:_______________________Mein Buch:
http://www.interstellarmarines.com/_______http://www.epubli.de/shop/showshopelement?pubId=3477
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: 3D Collision

Beitrag von super_castle »

Ich versuche auch seit längerer Zeit mit Ogre in Purebasic klarzukommen.
Aber es klappt irgendwie nicht so, wie das Ogre es eigentlich machen soll.

Da ich auch beides nutzen möchte "Opengl" und "Directx", möchte ich nicht wechseln.

Hier hat ein Mensch mal etwas vernünftiges vollbracht mit der Ogre-Einbindung in Purebasic.
Er ist sehr fleissig und baut es noch aus:
http://www.triskell3d.com/page.php?2

Hier ist auch sein Forum:
http://www.triskell3d.com/_forum/index.php

Er beantwortet auch die Fragen correkt und hilft auch wunderbar.

Ich glaube , das Warten lohnt sich.
°°°
Beiträge: 59
Registriert: 05.11.2008 17:45

Re: 3D Collision

Beitrag von °°° »

Ja sieht interessant aus.
Auch wenn mann ein paar kleinigkeiten ändern könnte. z.B. muss man ja die Tastaturabfrage über OIS_KeyDown() machen und nicht KeyboardPushed() weil kein "PB Screen" geöffnet wurde.

Und ich nehme jetzt mal an das man mein Problem nicht lösen kann. Ohne auf eine lib zuzugreifen.
PureBasic 4.51

Support this Game:_______________________Mein Buch:
http://www.interstellarmarines.com/_______http://www.epubli.de/shop/showshopelement?pubId=3477
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: 3D Collision

Beitrag von super_castle »

OIS_KeyDown() machen und nicht KeyboardPushed()
Das geht auch normal mit den Befehlen.
Und den 3D-Screen in ein Gadget darstellen, macht er heute Abend noch.

Wenn du die Hilfe mal durchschaust, siehst du auch das deine Collisionsabfrage usw geklärt ist.
°°°
Beiträge: 59
Registriert: 05.11.2008 17:45

Re: 3D Collision

Beitrag von °°° »

Ja ich bin gerade dabei mein programm mit triskell3D neu zu schreiben.

Und klar funktioniert OIS_KeyDown() genau so wie KeyboardPushed() vorher. Es ist halt nur eine änderung die mir aufgefallen ist. Stören tut es mich jetzt nicht wirklich.
Und den 3D-Screen in ein Gadget darstellen
Klingt auch interessant. Na ich programmiere dann mal weiter.
PureBasic 4.51

Support this Game:_______________________Mein Buch:
http://www.interstellarmarines.com/_______http://www.epubli.de/shop/showshopelement?pubId=3477
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: 3D Collision

Beitrag von super_castle »

hat er gerade in sein forum reingestellt , dieses programmschnitzel 3D in einem Gadget :

Code: Alles auswählen

EnableExplicit

IncludeFile "Triskell3D.pbi"

Enumeration
  #Window_0
EndEnumeration
;- Gadget Constants
Enumeration
  #Container_0
EndEnumeration

Global event.l

InitSprite() 
OpenWindow(0, 0, 0, 800,600, "Screen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
ContainerGadget(#Container_0, 300, 20, 400,400)
_OpenScreen(#DRIVER_OPENGL, "name", 400,400, 32, 0, 60, 1, GadgetID(#Container_0))

_AddResourceLocation("media/models", #FILE_SYSTEM, "global")              ; models
_AddResourceLocation("media/materials/textures", #FILE_SYSTEM, "global" ) ; texture
_AddResourceLocation("media/materials/programs", #FILE_SYSTEM, "global")  ; program, shaders
_AddResourceLocation("media/materials/scripts", #FILE_SYSTEM, "global")   ; material script
_InitAllResources()

Global *Entity.TEntity = _LoadEntity("ogrehead.mesh")
_PositionNode(*Entity, 0,0,-128)

Global *mcamera.TCamera = _CreateCamera()
_CameraBackColor(*mcamera, $00ffff)

Repeat

  Repeat
    Event = WindowEvent()
      Select Event     
        Case #PB_Event_CloseWindow
          End
      EndSelect
    Until Event = 0 
  _TurnNode(*Entity, 0,0.2,0)
   
  _RenderWorld()
  _FlipBuffers()

ForEver

_CloseScreen()
_FreeEngine()
End
°°°
Beiträge: 59
Registriert: 05.11.2008 17:45

Re: 3D Collision

Beitrag von °°° »

Ja habe ich gesehn.

Wenn du in dem Forum im Bereich Bugs nach siehst wirst du sehen das ich auch nicht ganz untätig war.

Und auch wenn es gut gemeint ist musst du hier nicht mehr alles posten ich halte mich jetzt selbst auf dem laufenden.

Aber danke für die informationen

Mfg °°°
PureBasic 4.51

Support this Game:_______________________Mein Buch:
http://www.interstellarmarines.com/_______http://www.epubli.de/shop/showshopelement?pubId=3477
Antworten