LlSetPos: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
Strife Onizuka (talk | contribs)
mNo edit summary
Frio Belmonte (talk | contribs)
never realized llSetPos and relatives were unable to move prims beneath the region ground, whereas the build tool can to an extent
 
(One intermediate revision by one other user not shown)
Line 20: Line 20:
*If you have explicitally set your object as "static obstacle" for pathfinding , the function will fail with the error in the debug channel:
*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."
** "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.
|constants
|constants
|examples=
|examples=
{{LSL Tip|This function has a movement cap of 10m and a time delay of 0.2 seconds per call. Please consider using [[llSetRegionPos]] and/or [[llSetLinkPrimitiveParamsFast]] instead.}}
{{LSL Tip|This function has a movement cap of 10m and a time delay of 0.2 seconds per call. Please consider using [[llSetRegionPos]] and/or [[llSetLinkPrimitiveParamsFast]] instead.}}
<source lang="lsl2">
<syntaxhighlight lang="lsl2">
//Move the object up 1m when someone touches it.
//Move the object up 1m when someone touches it.
default {
default {
Line 45: Line 46:
     llSetPos(save);     
     llSetPos(save);     
}
}
</source>
</syntaxhighlight>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llSetRegionPos]]|Sets position of object to any position within the region.}}
|also_functions={{LSL DefineRow||[[llSetRegionPos]]|Sets position of object to any position within the region.}}

Latest revision as of 05:35, 19 May 2026

Summary

Function: llSetPos( vector pos );
0.2 Forced Delay
10.0 Energy

Moves the object or primitive towards pos without using physics.

• vector pos position in region or local coordinates depending upon the situation (see #Specification).

Movement is capped to 10m per call for unattached root prims.[1]

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

Caveats

  • This function causes the script to sleep for 0.2 seconds.
  • 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.

Examples

Important: This function has a movement cap of 10m and a time delay of 0.2 seconds per call. Please consider using llSetRegionPos and/or llSetLinkPrimitiveParamsFast instead.
//Move the object up 1m when someone touches it.
default {
     touch_start(integer i) {
          llSetPos(llGetPos() + <0,0,1>);
     }
}
// 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);    
}

Notes

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.

See Also

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 position
•  llGetPos Returns the prim's global position, even if it is attached or non-root

Deep Notes

Footnotes

  1. ^ Unless you exploit the undocumented warpPos bug.

Signature

function void llSetPos( vector pos );