llMoveToTarget
function
Function syntax
llMoveToTarget(vector target,// Target position vector in region coordinates.float tau// Timescale in seconds to critically damp the movement.
);- Energy
- 10
Critically damp to target in tau seconds (if the script is physical) Setting tau to 0.0 stops the critical damping; recommended tau values are greater than 0.2.
To stop the object from maintaining the target positions use llStopMoveToTarget
To change the rotation in the same manner use llLookAt or llRotLookAt.
llMoveToTarget(ZERO_VECTOR, 0.0);Caveats
Section titled “Caveats”- When slowly moving to a lower Z value, beware of SVC-2441 - the sim will incorrectly move the object down faster than it should. That is, if you try moving to
llGetPos()+<10, 10, -10>, you can end up at .z-10 several meters before getting to .x-10 and .y-10. There is a demo object in the JIRA which shows this effect. - A
llMoveToTargetcall seems to persist even if physics is turned off. This is a useful trick on sluggish sims where the object can drop a bit between the call to enable physics and the call tollMoveToTarget- just do thellMoveToTargetbefore setting the object to physical. llVecDist(llGetPos(), target)must be less than 65, or no movement will occur.- Calling
llMoveToTargetwith a tau of0.0or less will silently fail, and do nothing. The smallest functional tau is 0.044444444 (two physics frames, 2/45).
Examples
Section titled “Examples”Drop this script in a prim to have it follow the prim owner.
6 collapsed lines
default{ state_entry() { vector pos = llGetPos(); llSetStatus(STATUS_PHYSICS, TRUE); // Little pause to allow server to make potentially large linked object physical. llSleep(0.1); llMoveToTarget(pos,0.4); // Look for owner within 20 meters in 360 degree arc every 1 seconds. llSensorRepeat("", llGetOwner(), AGENT, 20.0, PI,1.0);7 collapsed lines
} sensor(integer total_number) { // Get position of detected owner vector pos = llDetectedPos(0); // Offset back one meter in X and up one meter in Z based on world coordinates. vector offset =<-1,0,1>;// offset = offset*llDetectedRot(0); //Adding this line will orient the follower relative to the owner's position. pos+=offset; llMoveToTarget(pos,0.4); }}Known issues
Section titled “Known issues”From the issue templates included by the wiki article:
- SVC-2441 (bug): Slowish llMoveToTarget path inconsistent when moving to a target at a -z position vs moving to +z
See also
Section titled “See also”Functions
Section titled “Functions”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.