Difference between revisions of "LlTarget"
Jump to navigation
Jump to search
m |
Core Taurog (talk | contribs) |
||
Line 11: | Line 11: | ||
|caveats | |caveats | ||
|constants | |constants | ||
|examples | |examples= | ||
<Pre> | |||
integer target_id; | |||
vector target_pos; | |||
default | |||
{ | |||
state_entry() | |||
{ | |||
target_pos = llGetPos() + <1.0, 0.0, 0.0>; | |||
target_id = llTarget(target_pos, 0.5); | |||
} | |||
at_target(integer tnum, vector targetpos, vector ourpos) | |||
{ | |||
if (tnum == target_id) | |||
{ | |||
llOwnerSay("object is within range of target"); | |||
llOwnerSay("target position: " + (string)targetpos + ", object is now at: " + (string)ourpos); | |||
llOwnerSay("this is " + (string)llVecDist(targetpos, ourpos) + " meters from the target"); | |||
llTargetRemove(target_id); | |||
} | |||
} | |||
not_at_target() | |||
{ | |||
llOwnerSay( | |||
"not there yet - object is at " + (string)llGetPos() + | |||
", which is " + (string)llVecDist(target_pos, llGetPos()) + | |||
" meters from the target (" + (string)target_pos + ")" | |||
); | |||
} | |||
} | |||
</Pre> | |||
|helpers | |helpers | ||
|also_functions= | |also_functions= |
Revision as of 04:43, 27 September 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llTarget( vector position, float range );66 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
This function is to have the script know when it has reached a position.
It registers a position with a range that triggers at_target and not_at_target events continuously until unregistered.
Returns an integer that is the handle to unregister the target with llTargetRemove.
• vector | position | |||
• float | range |
A similar function exists for rotations: llRotTarget
This function does not move the object, to do that use llSetPos or llMoveToTarget.
Caveats
Examples
integer target_id; vector target_pos; default { state_entry() { target_pos = llGetPos() + <1.0, 0.0, 0.0>; target_id = llTarget(target_pos, 0.5); } at_target(integer tnum, vector targetpos, vector ourpos) { if (tnum == target_id) { llOwnerSay("object is within range of target"); llOwnerSay("target position: " + (string)targetpos + ", object is now at: " + (string)ourpos); llOwnerSay("this is " + (string)llVecDist(targetpos, ourpos) + " meters from the target"); llTargetRemove(target_id); } } not_at_target() { llOwnerSay( "not there yet - object is at " + (string)llGetPos() + ", which is " + (string)llVecDist(target_pos, llGetPos()) + " meters from the target (" + (string)target_pos + ")" ); } }
See Also
Events
• at_target | not_at_target | – | positional target events | |
• at_rot_target | not_at_rot_target | – | rotational target events |
Functions
• | llTargetRemove | – | Stop a target position | |
• | llRotTarget | – | Setup a target rotation | |
• | llRotTargetRemove | – | Stop a target rotation |