LlDetectedRot/fr: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
Simpler script
Remove reference to blanked page
 
(One intermediate revision by one other user not shown)
Line 14: Line 14:
// Renvoie la direction de l'avatar touchant l'objet (comme une boussole)
// Renvoie la direction de l'avatar touchant l'objet (comme une boussole)


// @@ = avec des optimisations du code, cf :
  // liste des points cardinaux démarrant à l'Ouest et allant dans le sens inverse des aiguilles d'une montre
// wiki.secondlife.com/wiki/User:Void_Singer/Optimizations
 
  // liste des points cardinaux démarrant aprés 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" ];
list pointsCardinaux = [ "à l'Ouest", "au Sud-Ouest", "au Sud", "au Sud-Est", "à l'Est", "au Nord-Est", "au Nord", "au Nord-Ouest" ];


Line 50: Line 47:
               // la ligne suivante récupère la rotation de l'avatar et la convertit en point cardinal
               // la ligne suivante récupère la rotation de l'avatar et la convertit en point cardinal
             + directionBoussole( llDetectedRot( numeroTouche) ) );
             + directionBoussole( llDetectedRot( numeroTouche) ) );
     } while ( ++numeroTouche < nombreTouche ); // @@
     } while ( ++numeroTouche < nombreTouche );  
   }
   }
}
}

Latest revision as of 05:14, 24 January 2013

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.

Spécifications

Les fonctions llDetected* peuvent être appellées depuis n'importe quel évènement, mais elles ne renverront de valeurs différentes de leur valeur standard que lorsqu'elles sont appellées depuis un évènement de Détection.

Avertissements

  • Les évènement activant les fonctions llDetected* renvoyent toujours au moins un élément détecté.
    • Les évènements de Détection ne sont pas déclenchés s'il n'y a rien à détecter (sauf pour no_sensor mais il n'active pas les fonctions llDetected*).
    • Le compteur de l'évènement de Détection n'est jamais, initialement, en dessous de 1.

Exemples

<lsl> // Renvoie la direction de l'avatar touchant l'objet (comme une boussole)

// 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 ); 
 }

} </lsl>

Voir également

Articles

•  Detected
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.