From Second Life Wiki
DetectedRot
llDetectedRot
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
|
|
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 ); // @@
}
}