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 |