LlDetectedTouchPos/fr

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Description

Fonction: vector llDetectedTouchPos( integer index );

retourne la position à laquelle a été touchée l objet/prim

Renvoie un vector Retourne la position où la prim/objet a été touchée :

  • dans le cas d'une prim rezzée sur le terrain , la position est exprimée en coordonnées régionales
  • dans le cas d'un attachement en HUD , la position est exprimée en coordonnée de l'écran relatives au centre de l'écran
• integer index Le paramètre index est le numéro du Nième toucher de l'objet/prim : en effet ,même si deux utilisateurs ne touchent pas le même objet en même temps , ils peuvent le toucher dans la même tranche de temps que celle définie par llMinEventDelay ou par un ralentissement de la sim

Avertissements

  • La prim qui a été touchée peut être différence de celle qui reçoit l’événement . C est le cas par exemple avec llPassTouches appelée avec TRUE ; dans ce cas , quand on touche une prim enfant , c est la prim root qui reçoit l’événement . On peut dans ce cas utiliser llDetectedLinkNumber pour savoir quelle prim a été touchée
  • TOUCH_INVALID_VECTOR est retournée quand :
    • Dans le cas de l’événement touch , le toucher a commencé sur la prim puis sans relâcher le toucher s est déplacé en dehors de la prim ( par exemple je touche une prim , je ne relâche pas le clique de la souris , mais je déplace mon curseur vers le terrain ou un autre objet ; si on veut pouvoir continuer à détecter le curseur de la souris en dehors de la prim , il vaut mieux utiliser llDetectedGrab
    • L’événement n est pas un événement touch.

Exemples

<lsl> default {

   touch_start(integer pos_detected)
   {
       integer i = 0;
       for(; i<pos_detected; ++i)
           llWhisper(0, "Pos clicked: " + (string)llDetectedTouchPos(i));
   }

} </lsl> <lsl> vector GetRealTouchPos(vector pos) {

   //By Ariu Arai for free use to anyone
   //Returns a useful HUD Position Vector from the llDetectedTouchPos(); function
   //USE: vector pos = GetRealTouchPos(llDetectedTouchPos(0)); .. Etc.
   //This function is intended to be used to move child prims to where the user clicks. This does not work on the root prim.

   integer point = llGetAttached();
   vector offset;

   if(point == ATTACH_HUD_TOP_RIGHT)offset = <1, .933, -0.5>;
   else if(point == ATTACH_HUD_TOP_CENTER)offset = <1, 0, -0.5>;
   else if(point == ATTACH_HUD_TOP_LEFT)offset = <1, -.933, -0.5>;
   else if(point == ATTACH_HUD_BOTTOM_LEFT)offset = <1, -.933, 0.5>;
   else if(point == ATTACH_HUD_BOTTOM)offset = <1, 0.0, 0.5>;
   else if(point == ATTACH_HUD_BOTTOM_RIGHT)offset = <1, .933, 0.5>;

   //return (pos - llGetLocalPos()) + (offset * llGetLocalRot());
   return ((offset - llGetLocalPos()) + pos) / llGetLocalRot();

} </lsl>

Voir également

Notes avancées

Historique

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