Avec cette fonction, nous avons enfin tout pour faire une pose ball rudimentaire. La fonction du jour permet d'arrêter une animation de l'avatar. Quand on fait un sit sur un objet, par défaut cela lance l'animation "sit" (logique). Notre pose ball est déstiné à mettre notre avatar allongé, donc il faut arrêter cette position assise avant de lancer notre position allongée.
llStopAnimation a le même fonctionnement que llStartAnimation pour ses paramètres mais une démarre l'animation et l'autre l'arrête.
Il y a une imperfection dans cette pose ball mais vous trouverez laquelle, la solution se cache dans llSitTarget
Bonne chance et bonne animation
default
{
state_entry()
{
// change le libellé de sit
llSetSitText("Dormir");
}
// l'evenement se produit d'un changement avec un prim
// dans le cas qui nous interesse je m'assieds ou je me lève
changed(integer change)
{
// verifie si il s'agit d'un changement de liaison
if(change==CHANGED_LINK)
{
// la fonction du jour
key user=llAvatarOnSitTarget();
// on verifie la presence de l'avatar
if(user!=NULL_KEY)
{
// arrete l'animation naturelle de sit
llStopAnimation("sit");
// démare l'animation sleep pour mettre l'avatar allonger
llStartAnimation("sleep");
}
else
{
// arretes l'animation quand l'avatar se lève
llStopAnimation("sleep");
}
}
}
}
Affichage des articles dont le libellé est changed. Afficher tous les articles
Affichage des articles dont le libellé est changed. Afficher tous les articles
mercredi 16 janvier 2008
lundi 14 janvier 2008
llSetSitText
La fonction du jour est relativement basique. Vous avez déjà certainement vu sur les camp ou les teleport que le nom où est marqué sit a été changé.
Grace à llSetSitText vous pouvez changer le nom du menu. Cela permet de s'adapter au contexte.
Juste un paramètre, le nom que vous voulez mettre
default
{
state_entry()
{
// position de destination x,y,z
vector Destination=<512,34,10>;
// distance relative au teleport
vector offset=(Destination-llGetPos())/llGetRot();
// determine la position d'arriver
llSitTarget(offset,ZERO_ROTATION);
// la fonction du jour
llSetSitText("Teleport");
}
// l'evenement se produit d'un changement avec un prim
// dans le cas qui nous interesse je m'assieds ou je me lève
changed(integer change)
{
// verifie si il s'agit d'un changement de liaison
if(change==CHANGED_LINK)
{
// la fonction du jour
key user=llAvatarOnSitTarget();
// on verifie la presence de l'avatar
if(user!=NULL_KEY)
// remet debout l'avatar à la destination
// sinon il arrive en position assise
llUnSit(user);
}
}
}
Libellés :
changed,
llAvatarOnSitTarget,
llSetSitText,
llSitTarget,
llUnSit,
vector
vendredi 11 janvier 2008
llSitTarget
La fonction du jour llSitTarget détermine la position de l'avatar après l'action sit. Une application courante est le téléporteur. En effet on peut determiner la position d'assise mais elle n'est pas forcement sur l'objet lui même, la distance maximum est de 300m.
Le premier paramêtre est la distance relative par raport à notre objet. Attention ce n'est pas les coordonnées d'arrivé mais la distance entre les deux et il ne faut pas oublié de prendre en compte la rotation de l'objet sinon on se retrouve pas au même endroit.
Le deuxième paramètre est la rotation, ce n'est pas important dans le cadre d'un teleport la position finale alors on le mets à ZERO_ROTATION.
j'ai rajouté une autre fonction aujourd'hui llUnSit qui force l'avatar à se relever, sinon il arrive en position assise. Et on ne fait cette action que si il est assis dessus.
default
{
state_entry()
{
// position de destination x,y,z
vector Destination=<512,34,10>;
// distance relative au teleport
vector offset=(Destination-llGetPos())/llGetRot();
// la fonction du jour
llSitTarget(offset,ZERO_ROTATION);
}
// l'evenement se produit d'un changement avec un prim
// dans le cas qui nous interesse je m'assieds ou je me lève
changed(integer change)
{
// verifie si il s'agit d'un changement de liaison
if(change==CHANGED_LINK)
{
// la fonction du jour
key user=llAvatarOnSitTarget();
// on verifie la presence de l'avatar
if(user!=NULL_KEY)
// remet debout l'avatar à la destination
// sinon il arrive en position assise
llUnSit(user);
}
}
}
Libellés :
changed,
key,
llAvatarOnSitTarget,
llGetPos,
llGetRot,
llSitTarget,
llUnSit,
vector
jeudi 10 janvier 2008
llAvatarOnSitTarget
Nous allons commencer une nouvelle thématique avec la fonction llAvatarOnSitTarget(), comment gérer les liaisons et les animations entre prim avatar. Avec pour finalité, ce qu vous avez déjà vu partout dans second life les "pose ball".
Changed se produit quand une interaction vient de se produire avec l'objet. Dans notre cas, si un avatar s'assied ou se lève. Quand on s'assied sur un objet notre avatar est "linker", lié, à l'objet.
le integer change nous indique ce qu'il s'est passé, ici on test si c'est la liaison qui a été modifiée. Mais on ne sait pas s'il s'est levé ou assis. La fonction du jour va nous y aidée.
Elle permet de retourner la key de l'avatar assis sur l'objet, donc si la key n'est pas null c'est qu'il est assis et a contrario c'est qui vient de se lever
default
{
// l'evenement se produit d'un changement avec un prim
// dans le cas qui nous interesse je m'assieds ou je me lève
changed(integer change)
{
// verifie si il s'agit d'un changement de liaison
if(change==CHANGED_LINK)
{
// la fonction du jour
key user=llAvatarOnSitTarget();
// on verifie la presence de l'avatar
if(user!=NULL_KEY)
llInstantMessage(user,"Suis je confortable?");
else
llInstantMessage(user,"merci de m'avoir utilise");
}
}
}
Libellés :
changed,
key,
llAvatarOnSitTarget,
llInstantMessage
Inscription à :
Articles (Atom)
