Skip to content
lsl.devlsl.devLSL Dev

llSetPos

function
Function syntax
llSetPos(
  1. 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

How to use
llSetPos(ZERO_VECTOR);

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.

  • 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 llMoveToTarget instead.
  • 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.
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 prims
llSetLocalPos(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.

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
  • 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 position
  • llGetPos — 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.

  1. Unless you exploit the undocumented warpPos bug. ↩