[Recherche] Rotation séquentielle

Répondre
Partager Rechercher
Bonjour
je n'ai pas vu de post de présentation (j'ai peu cherché) mais si il y en a un , je me ferais un plaisir de me présenter
Mon problème vient ...*
tadammm.. des rotations
Alors j'ai imprimé l'excellentissime "rotation pour les nul" du magik Best Momo (qui porte bien son nom)
et j'ai une rotation fluide cote serveur , sans dégager trop de lag
Mais ce que je voudrais c'est une rotation de 90° lente, puis un moment d'attente, et la rotation repart pour 90°
le but étant de présenter une face d'un cube , et de laisser le temps au personnes de voir la face
Voila , je vous remercie d'avance pour toute la lecture sur les scripts que j'ai fait depuis des années, mais la , après recherche je n'ai pas trouver mon rêve

Venusia
Ps le script de base (100% Bestmomo)
rotation rot;
default {
state_entry() {
rot = llEuler2Rot(<.0, .0, PI / 300.0>);
llSetTimerEvent(.02);
}
timer() {
llSetLinkPrimitiveParamsFast(0, [PRIM_ROTATION, llGetRot() * rot]);
}
}

Dernière modification par Princess Venusia ; 23/09/2019 à 12h47.
Peut-être quelque chose comme ceci ...
Code:
float speed = 1.0;
float sleep = 5.0;

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);
        llSetTimerEvent(0.1);
    }

    timer()
    {
        llSetTimerEvent(sleep + speed);
        llSetKeyframedMotion([ZERO_VECTOR, llEuler2Rot(<0.0, 0.0, 90.0> * DEG_TO_RAD), speed], []);
    }
}

Dernière modification par djphil ; 29/09/2019 à 19h22.
Citation :
Publié par djphil
Peut-être quelque chose comme ceci ...
Code:
float speed = 1.0;
float sleep = 5.0;

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]);
        llSetTimerEvent(0.1);
    }

    timer()
    {
        llSetTimerEvent(sleep);
        llSetKeyframedMotion([ZERO_VECTOR, llEuler2Rot(<0.0, 0.0, 90.0> * DEG_TO_RAD), speed], []);
    }
}
Heuuu merci, mais je voulais que mon cube il tourne , la j'ai l'impression que ça change les texture de face

Bon du coup, a force de chercher, et de chercher a comprendre, je l'ai fait mon script
Peut être possibilités de le simplifié mais bon voila pour l'instant

Code:
integer counter;
rotation rot;
float strength;
float damping;
default {
state_entry() {
llSetLinkPrimitiveParamsFast(0, [PRIM_ROTATION, <0,0,0,1>]);    
rot = llEuler2Rot(<PI / 160.0, .0, .0>);
strength = llGetMass() / 2.0;
damping = strength / 10.0;
llSetTimerEvent(.02);}
timer() {llRotLookAt(llGetRot() * rot, strength, damping);
counter+=1;
if (counter==80)
{
llSetTimerEvent(0);
llSleep(60);
counter=0;
llSetTimerEvent(.02);
}
}
}

Dernière modification par Princess Venusia ; 27/09/2019 à 15h57. Motif: Auto-fusion
Citation :
Heuuu merci, mais je voulais que mon cube il tourne
C'est bien ce qu'il fait ...
Citation :
la j'ai l'impression que ça change les texture de face
Heureusement ce n'est qu'une "impression"

Plus sérieusement,
  • llSetKeyframedMotion permet de déplacer un prim et/ou de le faire tourner.
    (Celà ne modifie en aucun cas la texture)
  • llRotLookAt permet d'orienter un prim dans une direction.
    (Dans ton cas, llRotLookAt ne me semble pas approprié)
Tu peux aussi utiliser:
  • llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_ROTATION, rot * llGetRot()]);
ou, pour une rotation fluide:
  • llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_OMEGA, <0.25, 0.0, 0.0>, PI, 1.0]);
    (avec PRIM_OMEGA tu devras stopper la rotation chaque fois)
Et enfin, ton script rectifié:
Code:
rotation rot;
integer tic;

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_ROTATION, ZERO_ROTATION]);
        rot = llEuler2Rot(<5.0, 0.0, 0.0> * DEG_TO_RAD);
        llSetTimerEvent(0.1);
    }

    timer()
    {
        llSetTimerEvent(1.0);
        ++tic;

        if (tic == 5)
        {
            tic = 0;
            llSetTimerEvent(5.0);
        }

        llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_ROTATION, rot * llGetRot()]);
    }
}
PS: llSetTimerEvent(0.02) avec une valeur si petite, c'est vraiment à éviter, voir proscrire (lag).
Si tu peux un mouvement fluide avec ton script, c'est mieux d'utilise une boucle for ou while.

Celui-ci tourne comme le tiens
Code:
float speed = 1.0;
float sleep = 5.0;

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_THIS, [
            PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX,
            PRIM_ROTATION, ZERO_ROTATION
        ]);
        llSetKeyframedMotion([ZERO_VECTOR, ZERO_ROTATION, 0.0], []);
        llSetTimerEvent(1.0);
    }

    timer()
    {
        llSetTimerEvent(sleep + speed);
        llSetKeyframedMotion([ZERO_VECTOR, llEuler2Rot(<90.0, 0.0, 0.0> * DEG_TO_RAD), speed], []);
    }
}

Dernière modification par djphil ; 28/09/2019 à 07h39. Motif: Auto-fusion
Bonjour
déjà merci de t'occuper de moi comme ca
ensuite quand je dis que j'ai l'impression c'est pour expliquer ce que je voie, évidement qu'il tourne mais d'un coup Oo
et je voulais que ça tourne doucement
ha oui le (
02) c'etait (.05) que je devait mettre embrouyée avec les deux script de bestMomo
bon j'essaie tout ca et je te dis

Venusia
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés