What's wrong with my collisions?
Blitz3D Forums/Blitz3D Beginners Area/What's wrong with my collisions?
| ||
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
|
| ||
| Two things: - You've set up level-to-guy/camera collisions, instead on guy/camera-to-level. - You need UpdateWorld in your main loop. |
| ||
| (edit) Also, use EntityRadius for both camera and guy EntityRadius camera, 1 entityRadius guy, 0.04 ;(?) |
| ||
| Thanks! |
| ||
| 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? |
| ||
| 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. |
| ||
| 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? |
| ||
| 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. :) |
| ||
| 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. |
| ||
| 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. |
| ||
| 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 |