LlDetectedRot
From Second Life Wiki
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Tutorials |
Contents |
Summary
Function: rotation llDetectedRot( integer number );| 38 | Function ID |
| 0.0 | Delay |
| 10.0 | Energy |
Returns a rotation that is the rotation of detected object number.
| • integer | number | – | Index of detection information |
number does not support negative indexes. Returns <0.0, 0.0, 0.0, 1.0> if number is not valid sensed object.
Specification
llDetected* functions can be called anywhere but will only return usable values if called from within Detection events (collision, collision_start, collision_end, sensor, touch, touch_start, touch_end) and functions called by Detection events.
Caveats
- If number is out of bounds the script continues to execute without an error message.
- Events that enable the llDetected* functions always return at least one detected item.
- Detection events are not raised if there is nothing detected (with the slight exception of no_sensor but it doesn't enable llDetected* functions).
- The event detection count parameter value is initially never less than 1.
Examples
//--// get compass facing of Avatar that touches this object //--// //-- @@ = Contains code optimizations, see the following page for details //-- wiki.secondlife.com/wiki/User:Void_Singer/Optimizations //-- list of compass directions starting at East, rotated clockwise list gLstCompassPoints = [ "East", "NorthEast", "North", "NorthWest", "West", "SouthWest", "South", "SouthEast" ]; //-- convert rotation to z-axis compass direction string CompassDirection( rotation rRotBase ) { integer iCountCompassPoints = llGetListLength(gLstCompassPoints); //-- convert rotation to a direction vector vDirection = <0.0, 1.0, 0.0> / rRotBase; //-- take the direction and determine the z rotation float fAngle = llAtan2(vDirection.x, vDirection.y); //-- take the angle and find the compass point integer iCompassPoint = llRound(fAngle * iCountCompassPoints / TWO_PI); //-- convert to string return llList2String( gLstCompassPoints, iCompassPoint ); } default{ state_entry() { llSay( 0, "Touch me to get your compass facing" ); } touch_start( integer vIntTouchCount ) { integer vIntCounter = 0; do { llSay( 0, llDetectedName( vIntCounter ) + " is facing " //-- next line gets avatar rotation and converts to compass direction + CompassDirection( llDetectedRot( vIntCounter ) ) ); } while ( ++vIntCounter < vIntTouchCount ); } }
This article wasn't helpful for you? Maybe the related article at the LSL Wiki is able to bring enlightenment.

