[B3D] EntityParent nach einer Kollision ins Entity gedrückt!
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: [B3D] EntityParent nach einer Kollision ins Entity gedrückt! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Alle, habe mal wieder ein kleines Problem. Bin dabei ein Spiel zu proggen und will für mein Raumschiff drei Eckpunkte per EntityRadius als Kollisionsabfrage machen. Die Positionen der Kollisionspunkte mache ich per EntityParent. Leider wird nach einer Kollision das Parent nach einer Kollision in das Entity eingedrückt! Und dieses will ich vermeiden. Wie geht das ohne das ich immer wieder das Parent neu (mit Cos/Sin) berechnet positionieren muß?
Hier mal ein kleines testprogramm welches das Problem veranschaulichen soll.Code: [AUSKLAPPEN] Graphics3D 400,400,0,2
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,0,-5 light=CreateLight() RotateEntity light,0,30,0 ;Boden cube=CreateCube() PositionEntity cube,0,-3,0 ScaleEntity cube,2,2,2 EntityType cube,2 ;Schiff schiff=CreateSprite() sphere=CreateSphere() ScaleSprite schiff,.3,.3 ScaleEntity sphere,.2,.2,.2 PositionEntity sphere,0,-.4,0 EntityRadius sphere,.2 EntityParent sphere,schiff EntityType sphere,1 ypa#=0 yp#=5 yg#=0 While Not KeyHit(1) yg=yg-0.001 ypa=yp yp=yp+yg PositionEntity schiff,0,yp,0 Collisions 1,2,2,2 UpdateWorld If CountCollisions(sphere)>0 Then yp=ypa yg=-yg/2 End If RenderWorld Flip Wend End |
||
![]() |
preachie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi hectic,
wenn ich das richtig verstehe, ist das Schiff der Parent von der Sphere, welche auf Kollisionen überprüft wird. Doch bewegen tust Du das Schiff, das sich natürlich weiter nach unten bewegt, da keine Kollisionsabfrage dies verhindert. Ich habe einmal die Eltern-Kind-Beziehung ausgetauscht und statt des Schiffs die Sphere bewegt und erhalte so dann ein korrektes Ergebnis. Also folgender Code: Code: [AUSKLAPPEN] Graphics3D 400,400,0,2
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,0,-5 light=CreateLight() RotateEntity light,0,30,0 ;Boden cube=CreateCube() PositionEntity cube,0,-3,0 ScaleEntity cube,2,2,2 EntityType cube,2 ;Schiff schiff=CreateSprite() sphere=CreateSphere() ScaleSprite schiff,.3,.3 ScaleEntity sphere,.2,.2,.2 PositionEntity sphere,0,-.4,0 EntityRadius sphere,.2 EntityParent schiff,sphere EntityType sphere,1 ypa#=0 yp#=5 yg#=0 While Not KeyHit(1) yg=yg-0.001 ypa=yp yp=yp+yg PositionEntity sphere,0,yp,0 Collisions 1,2,2,2 UpdateWorld If CountCollisions(sphere)>0 Then yp=ypa yg=-yg/2 End If RenderWorld Flip Wend End Wobei ich ehrlich gesagt noch nicht ganz genau das Problem bzw. den Anwendungsfall verstanden habe ![]() Vielleicht hilft es ja trotzdem irgendwie weiter ![]() Gruß Preachie |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi preachie, daß Problem ist, daß mein Raumschiff 3 dieser EntityRadius-Kollisionsabfragen hat. Ich kann also nicht den EntityRadius als Parent nehmen, da dann die anderen beiden garnicht mehr richtig funzen würden. Im Spiel ist die Sphere natürlich mit einem Triangle und Alpha=0 dargestellt, um nicht unnötig Recourcen zu verschwenden. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group