move towards point
Blitz3D Forums/Blitz3D Programming/move towards point
| ||
Hi, I’m looking for some routine, which turns, moves an entity towards a target point and one can supply a turn softening parameter, to indicate how fast the entity should turn towards the new target point. I know I have seen this kind of routine floating around here before and I did a search for it, but I can’t seem to find it. And I could probably also hack something like this together myself. But why reinventing the wheel? ;-) Thanx a lot for any response! |
| ||
Do you want the entity to turn and face the target before it moves and then stop within a certain distance of the target or do you want it to turn and move at the same time (i.e. like a car following a waypoint)? Not tested this code but it should give you an idea of what you need to do? global temp_pivot=createpivot() function move_to_point(entity,x,y,z,turn_speed#=.01, move_speed#=.1, stop_range#=1) positionentity temp_pivot,x,y,z if entitydistance(entity,temp_pivot) > stop_range yaw#=deltayaw(entity,temp_pivot) pitch#=deltapitch(entity,temp_pivot) turnentity entity , pitch*turn_speed , yaw*turn_speed,0 moveentity entity,0,0,move_speed endif end function |
| ||
Function PointAtLocation(entity,x#,y#,z#,soft#) mypiv = createpivot() markerpiv = createpivot() positionentity markerpiv,x,y,z positionentity mypiv,entityx(entity),entityy(entity),entityz(entity) entityparent mypiv,entity pointentity mypiv,markerpiv pit# = entitypitch(mypiv) yaw# = entityyaw(mypiv) turnentity entity,pit*soft,yaw*soft,0 freeentity mypiv freeentity markerpiv return sqr(pit*pit + yaw*yaw) end function this code will return how far from pointing at the target the entity is so you can move based on that information. |
| ||
Thanks for the quick help guys! I'll try the above code out. |
| ||
try this too, but i think dark eagles is alot tidier :) http://www.blitzbasic.com/bbs/posts.php?topic=24472 |