collisions

Blitz3D Forums/Blitz3D Beginners Area/collisions

patisawesome(Posted 2003) [#1]
i need help with collisions. it won't detect them no matter
what i do.
here's my code

Graphics3D 940,680,16,2
SetBuffer BackBuffer()

Const type_cam=1,type_terrain=11,type_car=10

Collisions type_cam,type_terrain,2,3
Collisions type_cam,type_car,2,3

land=LoadTerrain("hmap_1024.bmp")
ScaleEntity land,10,800,10
PositionEntity land,0,-1,10
TerrainShading land,True
TerrainDetail land,1000,True
EntityType land,type_terrain

tex=LoadTexture( "terrain-1.jpg" )
ScaleTexture tex,10,10
EntityTexture land,tex,0,1

car=LoadMesh("car2.x")
ScaleEntity car,10,10,10
PositionEntity car,0,5,2
RotateEntity car,0,180,0
EntityType car,type_car

camera=CreateCamera()
PositionEntity camera,50,20,-20
TurnEntity camera,0,0,0
EntityType camera,type_cams

water_level=CreatePlane()
EntityAlpha water_level,0.4

water=CreatePlane()
PositionEntity water,Sin(time*.01)*10,water_level+Sin(time*.05)*.5,Cos(time*.02)*10
EntityAlpha water,0.4

wtex=LoadTexture("water-2_mip.bmp")
ScaleTexture wtex,100,100
EntityTexture water,wtex,0,1
EntityTexture water_level,wtex,0,1

l=CreateLight()
TurnEntity l,45,45,0
LightColor l,255,255,255

While Not KeyDown(1)
If KeyHit(17)
wire=Not wire
WireFrame wire
EndIf

If KeyDown(200)
TurnEntity camera,-2,0,0
Else If KeyDown(208)
TurnEntity camera,2,0,0
EndIf
If Not KeyDown(30)
MoveEntity water_level,2,0,0
Else
MoveEntity water_level,2,0,0
EndIf
If KeyDown(203)
TurnEntity camera,0,+2,0
EndIf
If KeyDown(205)
TurnEntity camera,0,-2,0
EndIf
If KeyDown(30)
MoveEntity camera,0,0,2
EndIf
If KeyDown(31)
MoveEntity camera,0,0,10
EndIf
If KeyDown(32)
MoveEntity camera,0,0,30
EndIf
If KeyDown(44)
MoveEntity camera,0,0,-2
EndIf
If KeyDown(57)
MoveEntity camera,0,10,0
Else
MoveEntity camera,0,-2,0
EndIf
RenderWorld
Flip
Wend
End


Ross C(Posted 2003) [#2]
hey! First thing i see is that you have no UpdateWorld command. Put this before your RenderWorld. Second thing is this:

camera=CreateCamera() 
PositionEntity camera,50,20,-20 
TurnEntity camera,0,0,0 
EntityType camera,type_cams


you have no variable called type_cams. Spelling mistake there :)
should be

camera=CreateCamera() 
PositionEntity camera,50,20,-20 
TurnEntity camera,0,0,0 
EntityType camera,type_cam


so it should look like this when changed
Graphics3D 940,680,16,2 
SetBuffer BackBuffer() 

Const type_cam=1,type_terrain=11,type_car=10 

Collisions type_cam,type_terrain,2,3 
Collisions type_cam,type_car,2,3 

land=LoadTerrain("hmap_1024.bmp") 
ScaleEntity land,10,800,10 
PositionEntity land,0,-1,10 
TerrainShading land,True 
TerrainDetail land,1000,True 
EntityType land,type_terrain 

tex=LoadTexture( "terrain-1.jpg" ) 
ScaleTexture tex,10,10 
EntityTexture land,tex,0,1 

car=LoadMesh("car2.x") 
ScaleEntity car,10,10,10 
PositionEntity car,0,5,2 
RotateEntity car,0,180,0 
EntityType car,type_car 

camera=CreateCamera() 
PositionEntity camera,50,20,-20 
TurnEntity camera,0,0,0 
EntityType camera,type_cam

water_level=CreatePlane() 
EntityAlpha water_level,0.4 

water=CreatePlane() 
PositionEntity water,Sin(time*.01)*10,water_level+Sin(time*.05)*.5,Cos(time*.02)*10 
EntityAlpha water,0.4 

wtex=LoadTexture("water-2_mip.bmp") 
ScaleTexture wtex,100,100 
EntityTexture water,wtex,0,1 
EntityTexture water_level,wtex,0,1 

l=CreateLight() 
TurnEntity l,45,45,0 
LightColor l,255,255,255 

While Not KeyDown(1) 
   If KeyHit(17) 
      wire=Not wire 
      WireFrame wire 
   EndIf 

   If KeyDown(200) 
      TurnEntity camera,-2,0,0 
   Else If KeyDown(208) 
      TurnEntity camera,2,0,0 
   EndIf 

   If Not KeyDown(30) 
      MoveEntity water_level,2,0,0 
   Else 
      MoveEntity water_level,2,0,0 
   EndIf 

   If KeyDown(203) 
      TurnEntity camera,0,+2,0 
   EndIf 
      If KeyDown(205) 
      TurnEntity camera,0,-2,0 
   EndIf 

   If KeyDown(30) 
      MoveEntity camera,0,0,2 
   EndIf 

   If KeyDown(31) 
      MoveEntity camera,0,0,10 
   EndIf 

   If KeyDown(32) 
      MoveEntity camera,0,0,30 
   EndIf 

   If KeyDown(44) 
      MoveEntity camera,0,0,-2 
   EndIf 

   If KeyDown(57) 
      MoveEntity camera,0,10,0 
   Else 
      MoveEntity camera,0,-2,0 
   EndIf

   UpdateWorld
   RenderWorld 
   Flip 
Wend 
End


I've put in some indentation. You should really do that with your code, as it makes it look cleaner and easier to follow thru should you look back on it or have an error :)

Looking good tho, keep up the good work!


patisawesome(Posted 2003) [#3]
thanks!
-me