function
Function syntax
llSetPos(vector pos// Position vector to move to (in region coordinates, or local coordinates if in a child prim).
);- Delay
- 0.2 s
- Energy
- 10
Moves the object or primitive towards pos without using physics.
Movement is capped to 10m per call for unattached root prims.1
llSetPos(ZERO_VECTOR);Specification
Section titled “Specification”This function is available for nonphysical root prims and all child prims. It has no effect on the root prim if the object is physical.
Coordinate Frame
Section titled “Coordinate Frame”- Root prims (or single prim objects)
- Attached
- pos is a local coordinate relative to the attach point.
- Not attached
- pos is a region coordinate.
- Child prims (non root prims)
- pos is a local coordinate relative to the root prim.
Caveats
Section titled “Caveats”- Because of the intermixing of local and regional coordinates with this function, when a prims position is wanted it is best to use
llGetLocalPos. - This function does not work in the root prim of physical objects. Use a physical function like
llMoveToTargetinstead. - If you have explicitally set your object as “static obstacle” for pathfinding , the function will fail with the error in the debug channel:
- “Unable to set prim position or scale: object contributes to the navmesh.”
- The function cannot move a world object below the region ground level, and the midpoint of the root will be snapped to the ground instead.
Examples
Section titled “Examples”Example 1
//Move the object up 1m when someone touches it.default { touch_start(integer i) { llSetPos(llGetPos() + <0,0,1>); }}10 collapsed lines
// to bypass the small movement bug use this// - created by Madpeter Zond// notes: it does not check if the movement would go out of limit range for linked primsllSetLocalPos(vector offset){ vector save = offset; if(offset.x < 0.0) offset.x -= 1; else offset.x += 1; if(offset.y < 0.0) offset.y -= 1; else offset.y += 1; if(offset.z < 0.0) offset.z -= 1; else offset.z += 1; llSetPos(offset); llSetPos(save);}Multiple movement commands can be chained together with llSetPrimitiveParams and PRIM_POSITION. The advantage of doing this is that the script only sleeps once per function call instead of once per movement.
Known issues
Section titled “Known issues”From the issue templates included by the wiki article:
- SVC-1945 (bug): llSetPos() doesn’t change position for small vectors when called in attachments on Havok4 unless interacted with
See also
Section titled “See also”Functions
Section titled “Functions”llSetRegionPos— Sets position of object to any position within the region.llGetLocalPos— Returns the prim’s local position if it is attached or non-root (otherwise it returns the global position)llGetRootPosition— Gets the root prims positionllGetPos— Returns the prim’s global position, even if it is attached or non-root
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.