Difference between revisions of "LlDetectedVel"

From Second Life Wiki
Jump to navigation Jump to search
(Edit example for formatting, improved loop, and to use sensible values for range and arc)
m (fixed bugs)
Line 17: Line 17:
     state_entry()  
     state_entry()  
     {
     {
         // Scan once for avatars within a 96 metre radius sphere
         // Scan once for avatars within a 20 metre radius sphere
         llSensor("", "", AGENT, 96.0, PI);
         llSensorRepeat("", "", AGENT, 20.0, PI,1.0);
     }
     }
     sensor(integer num)  
     sensor(integer num)  
Line 25: Line 25:
         while(num--)  
         while(num--)  
         {
         {
             llOwnerSay(llDetectedName(num) + " is moving at " + (string)llVecMag(llDetectedVel(i)) + " m/s.");
             llOwnerSay(llDetectedName(num) + " is moving at " + (string)llVecMag(llDetectedVel(num)) + " m/s.");
         }
         }
     }
     }

Revision as of 13:24, 6 August 2013

Summary

Function: vector llDetectedVel( integer number );
0.0 Forced Delay
10.0 Energy

Returns the vector velocity of detected object or avatar number.

• integer number Index of detection information

number does not support negative indexes. Returns <0.0, 0.0, 0.0> if number is not valid sensed object or avatar.

Specification

llDetected* functions only work if called from within Detection events (collision, collision_start, collision_end, sensor, touch, touch_start, touch_end) or in functions called by Detection events. They will fail silently and return unusable values if called during other events.

Caveats

  • If number is out of bounds this function returns <0.0, 0.0, 0.0> and 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.[1]
    • The detection event's items detected parameter is initially never less than 1.[2]

Examples

<lsl> //Tells the name and velocity of all near-by avatars. default {

   state_entry() 
   {
       // Scan once for avatars within a 20 metre radius sphere
       llSensorRepeat("", "", AGENT, 20.0, PI,1.0);
   }
   sensor(integer num) 
   {
       // num will initially be 1 or more. When num is 1, the index of the detected avatar will be zero       
       while(num--) 
       {
           llOwnerSay(llDetectedName(num) + " is moving at " + (string)llVecMag(llDetectedVel(num)) + " m/s.");
       }
   }

}

</lsl>

See Also

Articles

•  Detected

Deep Notes

Footnotes

  1. ^ The exception is no_sensor but it doesn't enable llDetected* functions.
  2. ^ Like all event parameters, the user can overwrite the initial value.

Signature

function vector llDetectedVel( integer number );