meshY help FPS

Blitz3D Forums/Blitz3D Programming/meshY help FPS

is there anyway to keep the camera a certain distance away from the mesh ground. i need it to stay the distance so it looks like you are looking through the eyes of the person. also the mesh is a .b3d mesh if that matters at all. i need the camera "person" to go up ramps and down stairs and vice versa.

I guess one way would be:
- create a pivot.
- give it an entity radius.
- set up a collision between it and the level mesh.
- parent the camera to the pivot.
- position the camera the required distance above the pivot.

You would then need to operate all your movements etc. on the pivot, not the camera itself.

OR: wait 'til someone with FPS experience comes along with a better solution! :P

ok thanx that purty much solved that. thank you

ok now how do i position the camera the distance from the pivot

Code may contain typing errors, but this method works 100% ;)

See my next post.

ok thanx ill try that

is there anyway to explain what the variables mean, because it is hard to know which variables match up to the ones i have

Sure. Happy to help. I also made a slight mistake in the LinePick() line but here's the updated version :

;'mesh' is your mesh landscape
mesh=loadmesh("mesh.b3d") 
;turn on polygon picking for the landscape
entitypickmode(mesh,2) 

repeat 
;...your code

;once you've updated your characters position, put this code in
;mycamera is your camera entity
;player_x is the x coordinate of the player. Use entityx() to get this
;player_z is the z coordinate of the player. Use entityz() to get this
;player_tall is the height you want to keep the camera above the ground

positionentity(mycamera,player_x#,meshy(player_x#,player_z#,30)+player_tall#,player_z#) 
;your code 
forever 

function meshy#(x#,z#,maxheight#,radius#=0.1) 
;this function returns the height (y) of a mesh landscape at the x,z coords given 
;maxheight is the height of the highest point of your landscape (just guess or use a large number)
linepick(x,maxheight,z,0,0-(maxheight*2),0,radius#) 
return pickedy() 
end function 


hey thanks that worked out