Difference between revisions of "Follower script"
Jump to navigation
Jump to search
Kayn Vieria (talk | contribs) m (Follower (script) moved to Follower script) |
(added relative to owner) |
||
Line 6: | Line 6: | ||
state_entry() | state_entry() | ||
{ | { | ||
llSetStatus(STATUS_PHYSICS, TRUE); | llSetStatus(STATUS_PHYSICS, TRUE); | ||
// Little pause to allow server to make potentially large linked object physical. | // Little pause to allow server to make potentially large linked object physical. | ||
llSleep(0.1); | llSleep(0.1); | ||
// Look for owner within 20 metres in 360 degree arc every 1 seconds. | // Look for owner within 20 metres in 360 degree arc every 1 seconds. | ||
llSensorRepeat("", llGetOwner(), AGENT, 20.0, PI,1.0); | llSensorRepeat("", llGetOwner(), AGENT, 20.0, PI,1.0); | ||
} | } | ||
sensor(integer total_number) | sensor(integer total_number) | ||
{ | { // Owner detected... | ||
// Get position | // Get position and rotation | ||
vector pos = llDetectedPos(0); | vector pos = llDetectedPos(0); | ||
rotation rot = llDetectedRot(0); | |||
// Offset back one metre in X and up one metre in Z based on world coordinates. | // Offset back one metre in X and up one metre in Z based on world coordinates. | ||
// | // use whatever offset you want. | ||
vector | vector worldOffset = <-1, 0, 1>; | ||
pos+= | // Offset relative to owner needs a quaternion. | ||
vector avOffset = worldOffset * rot; | |||
pos += avOffset; // use the one you want, world or relative to AV. | |||
llMoveToTarget(pos,0.4); | llMoveToTarget(pos,0.4); | ||
} | } |
Revision as of 14:58, 23 September 2007
This script is based on an extract from the Batman Follower v1.2.
default { state_entry() { llSetStatus(STATUS_PHYSICS, TRUE); // Little pause to allow server to make potentially large linked object physical. llSleep(0.1); // Look for owner within 20 metres in 360 degree arc every 1 seconds. llSensorRepeat("", llGetOwner(), AGENT, 20.0, PI,1.0); } sensor(integer total_number) { // Owner detected... // Get position and rotation vector pos = llDetectedPos(0); rotation rot = llDetectedRot(0); // Offset back one metre in X and up one metre in Z based on world coordinates. // use whatever offset you want. vector worldOffset = <-1, 0, 1>; // Offset relative to owner needs a quaternion. vector avOffset = worldOffset * rot; pos += avOffset; // use the one you want, world or relative to AV. llMoveToTarget(pos,0.4); } }