Difference between revisions of "LlRotTarget"
Fred Gandt (talk | contribs) m (Removed duplicate example.) |
Mako Nozaki (talk | contribs) m |
||
Line 69: | Line 69: | ||
{{LSL DefineRow|[[at_target]]|[[not_at_target]]|positional target events}} | {{LSL DefineRow|[[at_target]]|[[not_at_target]]|positional target events}} | ||
|also_functions= | |also_functions= | ||
{{LSL DefineRow||[[llRotTargetRemove]]| | {{LSL DefineRow||[[llRotTargetRemove]]|Cancel a target rotation}} | ||
{{LSL DefineRow||[[llTarget]]| | {{LSL DefineRow||[[llTarget]]|Register a target position}} | ||
{{LSL DefineRow||[[llTargetRemove]]| | {{LSL DefineRow||[[llTargetRemove]]|Cancel a target position}} | ||
|also_articles | |also_articles | ||
|notes | |notes |
Revision as of 18:04, 8 May 2010
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llRotTarget( rotation rot, float error );68 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
This function is to have the script know when it has reached a rotation.
It registers a rot with a error that triggers at_rot_target and not_at_rot_target events continuously until unregistered.
Returns an integer that is the handle to unregister the target with llRotTargetRemove
• rotation | rot | – | target rotation | |
• float | error | – | angle in radians, defines when rot has been reached |
A similar function exists for positions: llTarget
This function does not rotate the object, to do that use llSetRot, llRotLookAt or llLookAt.
Caveats
Examples
<lsl> vector standrot = <0.0, 0.0, 0.0>; vector fliprot = <45.0, 0.0, 0.0>;
// simple two-state rot target detection and rotation by Hypatia Callisto // works, to detect a rotation target. An example I wrote // since there is almost zilch for clean examples for // at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
integer rottarget;
default {
state_entry(){ rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1); llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // rotate to starting point }
not_at_rot_target() { llRotTargetRemove( rottarget ); llOwnerSay("not there"); //not at target } touch_start (integer total_number) { state rotatestate; // change to state for new position }
}
state rotatestate
{
state_entry(){ rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1); llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // rotate to new point } at_rot_target(integer tnum, rotation targetrot, rotation ourrot) { llRotTargetRemove( rottarget ); llOwnerSay("there"); //reached the target }
touch_start(integer touched){ state default; }
}
</lsl>See Also
Events
• at_rot_target | not_at_rot_target | – | rotational target events | |
• at_target | not_at_target | – | positional target events |
Functions
• | llRotTargetRemove | – | Cancel a target rotation | |
• | llTarget | – | Register a target position | |
• | llTargetRemove | – | Cancel a target position |