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);
        }
    }
}

Aucun commentaire: