LlDetectedRot/fr - Second Life Wiki

LlDetectedRot/fr

From Second Life Wiki

Jump to: navigation, search

Contents

Description

Fonction: rotation llDetectedRot( integer numéro );

Renvoie un rotation correspondant à la rotation de l'objet ou de l'avatar détecté identifié par son numéro.

• integer numéro Index des informations de détection

numéro n'accepte pas les index négatifs.
Renvoie <0.0, 0.0, 0.0, 1.0> si le numéro n'est pas un avatar ou un objet détecté valide.

Exemples

 
// Renvoie la direction de l'avatar touchant l'objet (comme une boussole)
 
// @@ = avec des optimisations du code, cf :
// wiki.secondlife.com/wiki/User:Void_Singer/Optimizations
 
 // liste des points cardinaux démarrant à l'Ouest et allant dans le sens inverse des aiguilles d'une montre
list pointsCardinaux = [ "à l'Ouest", "au Sud-Ouest", "au Sud", "au Sud-Est", "à l'Est", "au Nord-Est", "au Nord", "au Nord-Ouest" ];
 
 // convertit la rotation selon selon l'axe des z
string directionBoussole( rotation rotationDepart )
{
  // convertit la rotation en degrés
  vector vecteurRotation = llRot2Euler( rotationDepart ) * RAD_TO_DEG;
 
  // ramène dans l'intervalle [0, 360]
  integer direction = ((integer) (vecteurRotation.z + 202.5)) % 360;
 
  // convertit en texte
  return llList2String( pointsCardinaux, direction / 45 );
}
 
default
{
  state_entry()
  {
    llSay( 0, "Touchez-moi pour obtenir votre direction" );
  }
 
  touch_start( integer nombreTouche )
  {
    integer numeroTouche = 0;
    do
    {
      llSay( 0,
             llDetectedName( numeroTouche )
             + " fait face "
              // la ligne suivante récupère la rotation de l'avatar et la convertit en point cardinal
             + directionBoussole( llDetectedRot( numeroTouche) ) );
    } while ( ++numeroTouche < nombreTouche ); // @@
  }
}
 

Voir également

Articles

•  Detected