Wie mache ich eine 3D Kollision?
Übersicht

![]() |
Padde@gameworkerBetreff: Wie mache ich eine 3D Kollision? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Tach Leute!´ich mache grad einen 3d Ego Spiel, in dem man aber nicht schiesst, sondern nur rumrennt und aufträge erledigt! Jetzt hab ich es schon soweit geschrieben, dass man durch ein großen 3D Level rennen kann, doch man ist noch wie in einem Flugzeug,d.h. man kann unendlich hoch gehen und durch das terrain fliegen! Was ich brauche, ist eine anziehungskraft und eine kollision! So sieht es bis jetzt aus:
;Grafiken einstellen AppTitle "Stranding On Easteregg!-by patrick stadler" Graphics3D 1024,768 ;Licht und kamera light=CreateLight() camera=CreateCamera() PositionEntity camera,30,35,30 ;Terrain erschaffen terr=LoadTerrain( "gfx/heightmap_256.bmp" ) ScaleEntity terr,1000/TerrainSize(terr),70,1000/TerrainSize(terr) TerrainDetail terr,1000,True TerrainShading terr,True PositionEntity terr,-500,0,-500 tex=LoadTexture( "gfx/terrain-1.jpg" ) ScaleTexture tex,50,50 EntityTexture terr,tex EntityType terr,SCENE Global gravity# = 1 Global target=LoadSprite("gfx/maus.bmp",1,camera) MoveEntity target,0,0,75 EntityOrder target,-2 ;hauptschleife While Not KeyDown( 1 ) ;kamera bewegen RotateEntity camera, EntityPitch(camera) + MouseYSpeed(), EntityYaw(camera) - MouseXSpeed(), EntityRoll(camera) If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0 If KeyDown( 203 )=True Then TurnEntity camera,0,1,0 If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.05 If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.4 If KeyHit(63) = 1;F5 For w = 1 To 100 name$ = "Screenshot von Stranding on easteregg" + w + ".bmp" If FileType(name$) = 0 If done = 0 SaveBuffer(FrontBuffer(), name$) done = 1 EndIf EndIf Next EndIf done = 0 If MouseX() < 2 MoveMouse GraphicsWidth()-2, MouseY() temp = MouseXSpeed() ElseIf MouseX() > GraphicsWidth()-2 MoveMouse 1, MouseY() temp = MouseXSpeed() EndIf If MouseY() < 2 MoveMouse MouseX(), GraphicsHeight()-2 temp = MouseYSpeed() ElseIf MouseY() > GraphicsHeight()-2 MoveMouse MouseX(), GraphicsHeight()-2 temp = MouseYSpeed() EndIf ;Welt rendern und neu erschaffen RenderWorld Flip Wend End Code: [AUSKLAPPEN] |
||
---gameworker.ch.vu--- |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
für die Erdanziehung kannst du TranslateEntity benutzen.
das sieht dann etwa so aus: Code: [AUSKLAPPEN] TranslateEntity camera ,0,-0.3,0 Dann musst du noch ne Collision mit dem Terrain machen damit man nich nach unten durch fällt. grüße robotx |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
Padde@gameworkerBetreff: Thx! |
![]() Antworten mit Zitat ![]() |
---|---|---|
thx! Das mit der Anziehung geht jetzt schon mal! jetzt brauch ich nur noch das mit der Kollision! Kannste mir da bitte noch helfen? ![]() |
||
---gameworker.ch.vu--- |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
du prüfst die Collision mit dem Terrain und dann stoppst du das absenken:
Code: [AUSKLAPPEN] ;Du fügst hier die Variable für die Höhe ein Global ypos = 35 PositionEntity camera ,30,ypos,30 .......... Repeat TranslateEntity camera,0,-0.3,0 If ypos < 30 Then ypos = 30 Das musst du noch einfügen. ich denk so funktioniert es. robotx |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
Padde@gameworkerBetreff: ??? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Sry, ich weiss leider nicht, wo und was ich noch für die Kollision einsetzen muss! kannst du des bitte in den Code unten an der richtigen Stelle schreiben? thx!
---------------------------------CODE ;Grafiken einstellen AppTitle "Stranding On Easter Island!-by patrick stadler" Graphics3D 1024,768 ;Licht und kamera light=CreateLight() camera=CreateCamera() PositionEntity camera,30,35,30 EntityRadius camera,2 EntityType camera,1 ;Terrain erschaffen terr=LoadTerrain( "gfx/heightmap_256.bmp" ) ScaleEntity terr,1000/TerrainSize(terr),70,1000/TerrainSize(terr) TerrainDetail terr,1000,True TerrainShading terr,True PositionEntity terr,-500,0,-500 EntityType terr,1 tex=LoadTexture( "gfx/terrain-1.jpg" ) ScaleTexture tex,50,50 EntityTexture terr,tex EntityType terr,SCENE Global gravity# = 1 TranslateEntity camera ,0,-0.3,0 Global target=LoadSprite("gfx/maus.bmp",1,camera) MoveEntity target,0,0,75 EntityOrder target,-2 ;hauptschleife While Not KeyDown( 1 ) ;kamera bewegen RotateEntity camera, EntityPitch(camera) + MouseYSpeed(), EntityYaw(camera) - MouseXSpeed(), EntityRoll(camera) TranslateEntity camera ,0,-0.05,0 If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0 If KeyDown( 203 )=True Then TurnEntity camera,0,1,0 If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.05 If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.4 If KeyHit(63) = 1;F5 For w = 1 To 100 name$ = "Screenshot von Stranding on easteregg" + w + ".bmp" If FileType(name$) = 0 If done = 0 SaveBuffer(FrontBuffer(), name$) done = 1 EndIf EndIf Next EndIf done = 0 If MouseX() < 2 MoveMouse GraphicsWidth()-2, MouseY() temp = MouseXSpeed() ElseIf MouseX() > GraphicsWidth()-2 MoveMouse 1, MouseY() temp = MouseXSpeed() EndIf If MouseY() < 2 MoveMouse MouseX(), GraphicsHeight()-2 temp = MouseYSpeed() ElseIf MouseY() > GraphicsHeight()-2 MoveMouse MouseX(), GraphicsHeight()-2 temp = MouseYSpeed() EndIf ;Welt rendern und neu erschaffen RenderWorld Flip Wend End [syntax="bb"][/syntax] |
||
---gameworker.ch.vu--- |
KifferopaGastBetreff: Re: ??? |
![]() Antworten mit Zitat |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN]
|
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group