Wie mache ich eine 3D Kollision?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Padde@gameworker

Betreff: Wie mache ich eine 3D Kollision?

BeitragSa, März 12, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, März 12, 2005 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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@gameworker

Betreff: Thx!

BeitragSa, März 12, 2005 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
thx! Das mit der Anziehung geht jetzt schon mal! jetzt brauch ich nur noch das mit der Kollision! Kannste mir da bitte noch helfen? Very Happy
---gameworker.ch.vu---

robotx

BeitragSa, März 12, 2005 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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@gameworker

Betreff: ???

BeitragSa, März 12, 2005 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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---
 

Kifferopa

Gast

Betreff: Re: ???

BeitragSa, März 12, 2005 18:31
Antworten mit Zitat
BlitzBasic: [AUSKLAPPEN]

;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

;Typ/Radius
EntityType camera,1
EntityRadius camera,2
EntityType Terr,2
EntityRadius Terr,2

;Kollision prüfen
Collisions 1,2,2,3

;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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group