LlDetectedTouchPos/fr

From Second Life Wiki
Jump to navigation Jump to search

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.