From Second Life Wiki
RotTarget/fr
llRotTarget
Description
Fonction: integer llRotTarget( rotation rot, float error );
Cette fonction définie une cible de rotation et lance une détection de rotation.
Renvoie un integer permettant d'identifier la cible (cet identifiant sert à arrêter la détection avec llRotTargetRemove)
| • rotation
| rot
| –
| rotation cible
|
|
| • float
| error
| –
| précision en radians
|
|
La cible est une rotation définie par la rotation rot et les évènements déclenchés sont :
- at_rot_target si la rotation de l'objet est à moins de error radian de la rotation cible
- not_at_rot_target sinon.
Cette fonction ne tourne pas les objets, utilisez llSetRot, llRotLookAt ou llLookAt.
Une fonction similaire existe pour les positions: llTarget
Exemples
vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;
// Un exemple simple utilisant 2 états par Hypatia Callisto
// pour détecter la rotation d'une prim. Voici un exemple que j'ai écrit
// puisqu'il n'y avait presque rien pour illlustrer les fonctions
// at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
integer rottarget;
default
{
state_entry(){
rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // Fait pivoter à la position de départ
}
not_at_rot_target()
{
llRotTargetRemove( rottarget );
llOwnerSay("Rotation cible non atteinte");
}
touch_start (integer total_number){
state rotatestate; // change l'état pour une nouvelle position
}
}
state rotatestate
{
state_entry(){
rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // Fait pivoter à une nouvelle position
}
at_rot_target(integer tnum, rotation targetrot, rotation ourrot){
llRotTargetRemove( rottarget );
llOwnerSay("Rotation cible atteinte"); //atteint la cible
}
touch_start(integer touched){
state default;
}
}