What's wrong with my collisions?

Blitz3D Forums/Blitz3D Beginners Area/What's wrong with my collisions?

IKG(Posted 2006) [#1]
I can still walk right through the walls.

Graphics3D 640,480 
SetBuffer BackBuffer() 

;collisions
level_col = 1
camera_col = 2
guy_col = 3

camera=CreateCamera() 
PositionEntity camera,2,1,2  

;load guy
guy = LoadMesh("models/smiley.b3d")
ScaleMesh guy,0.04,0.04,0.04
PositionEntity guy,4,1,4

;load level
level = LoadMesh("maps/level1.b3d")
ScaleMesh level,0.04,0.04,0.04
PositionEntity level,0,0,0
 
;collision setup
Collisions level_col,camera_col,2,3
Collisions level_col,guy_col,2,3
EntityType camera,camera_col
EntityType guy,guy_col
EntityType level,level_col

While Not KeyDown( 1 )

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.05 

RenderWorld 

Text 0,0,"Camera's x coordinate:" + EntityX(camera)
Text 0,10,"Camera's y coordinate:" + EntityY(camera)
Text 0,20,"Camera's pitch:" + EntityPitch(camera)
Text 0,30,"Camera's yaw:" + EntityYaw(camera)

Flip 

Wend 

End 



big10p(Posted 2006) [#2]
Two things:

- You've set up level-to-guy/camera collisions, instead on guy/camera-to-level.

- You need UpdateWorld in your main loop.


b32(Posted 2006) [#3]
(edit)
Also, use EntityRadius for both camera and guy
EntityRadius camera, 1
entityRadius guy, 0.04 ;(?)


IKG(Posted 2006) [#4]
Thanks!


IKG(Posted 2006) [#5]
Now I have a new problem. I've put my collision radius up to 1.5 since it's the highest it will go up to without going through the mesh. Now I can't even fit through doors which are bigger than me. If I scale the mesh even higher, it will look unrealistic. What do I do?

Picture here: http://devdave.net/doortoosmall

Will I have to scale the mesh bigger, and make the camera zoom in a little?


big10p(Posted 2006) [#6]
EntityRadius allows you to specify an X and Y radius, to define an ellipsoid. So, you should be able to make your collision ellipsoid tall and thin, to fit through doors.


IKG(Posted 2006) [#7]
But the whole thing is that I can't fit sideways into the door. If I make the radius smaller, then the camera goes through the sides of the actual door (literally).

Should I do what I suggested? Scale the level and than mess around with the camera?


big10p(Posted 2006) [#8]
I don't think I understand your problem properly, as I don't see how scaling the level mesh will help. Maybe simply zooming the camera in a bit will help?

Anyway, if you think you have a solution, give it a try. :)


IKG(Posted 2006) [#9]
The camera is too large to fit through the door. But that's ok. For a minute, I forgot I was making a 3rd person game. I'm going to scale the level up and place my tiny camera behind the player. Now I just need to figure this all out so that the player can fit through the door.

What is it that you don't understand? I can't fit something through my door without lowering its radius and making the collisions crappy looking.


big10p(Posted 2006) [#10]
The camera is too large to fit through the door.
That's what I don't understand: a camera doesn't have a size - it's just a point in 3D space, like a pivot.

If by 'size', you're refering to the collision sphere applied to the camera, then just reduce it so that it fits through the door.


b32(Posted 2006) [#11]
The height of the camera should be separate from its EntityRadius. First set a smaller EntityRadius, then adjust the camera's offset using this:

UpdateWorld
MoveEntity camera, up
RenderWorld
MoveEntity camera, down