[recherche] Script on/off

Répondre
Partager Rechercher
Citation :
Publié par bestmomo
Désolé j'avais glissé un petit bug dans le script, maintenant il fonctionne quelle que soit l'orientation globale de la pédale
Extra, ça marche ! Il fallait faire la rotation en Z et dans l'autre sens mais ça j'ai su faire

Merci mille fois !
Citation :
Publié par Tasia
Extra, ça marche ! Il fallait faire la rotation en Z et dans l'autre sens mais ça j'ai su faire
Il faut surtout faire un reset du script si tu changes une rotation
Je relance l'affaire car je viens de me rendre compte que le script de momo avait un défaut.

Voilà, quand j'ai construit l'objet avec son script dedans, le pédalier et le vélo étaient disposés selon un axe... ouest-est, je crois.

Or, si je rereze mon vélo et son pédalier dans un axe nord-sud, le pédalier garde bien sa place, mais les pédales, de forme rectangulaire pivotent de 90° pour reprendre l'axe est-ouest initial.

Tu crois que cela peut-être corrigé, ou suis-je condamnée à utiliser mon vélo en regardant le couchant ou le levant ?
Citation :
Publié par Tasia
Je relance l'affaire car je viens de me rendre compte que le script de momo avait un défaut.

Voilà, quand j'ai construit l'objet avec son script dedans, le pédalier et le vélo étaient disposés selon un axe... ouest-est, je crois.

Or, si je rereze mon vélo et son pédalier dans un axe nord-sud, le pédalier garde bien sa place, mais les pédales, de forme rectangulaire pivotent de 90° pour reprendre l'axe est-ouest initial.

Tu crois que cela peut-être corrigé, ou suis-je condamnée à utiliser mon vélo en regardant le couchant ou le levant ?
Il faut tout lire Tasia . Si tu changes l'orientation il faut faire un reset du script. Sinon tu as dû voir que j'ai lancé un concours pour la version liée. Je peux donc pas mettre le code ici, je pourrai te le donner IW si tu me donne ton nom.
Citation :
Publié par bestmomo
Il faut tout lire Tasia . Si tu changes l'orientation il faut faire un reset du script. Sinon tu as dû voir que j'ai lancé un concours pour la version liée. Je peux donc pas mettre le code ici, je pourrai te le donner IW si tu me donne ton nom.
On s'était mal compris. Je voulais dire que j'ai changé la rotation de sens (sens des aiguilles d'une montre).

De quel code parles-tu ? IG, je suis Nastasia Tuqiri (et fière de l'être).
Bonsoir a tous, désolé pour le up mais je patauge un peu

J'ai créer une simple sphère, avec un script de rotation que voici:

Code PHP:

integer tourne FALSE;
default
{
touch_start(integer total_number)
{
if( 
tourne = !tourne )
llTargetOmega( <0.156170.468520.07808>, TWO_PI1.0);
else
llTargetOmega(ZERO_VECTOR0.00.0); 
}

Seulement je voudrais une rotation horizontale, et là je n'ai droit qu'a une rotation verticale

Si quelqu'un pourrait m'aider a résoudre mon problème
Ou simplement m’expliquer quel élément du code contrôle la fonction de rotation, je pourrais ensuite me débrouiller, c'est bon pour l'apprentissage

En vous remerciant d'avance, Marley65
axes de rotations
bonjour...avec llTargetOmega, les valeurs du vecteur donne les axes de rotation


llTargetOmega(<0.0, 0.0, 1.0>, TWO_PI, 1.0); par exemple fait tourner l'objet autour de son axe vertical z....sachant que l'on peut combiner les axes...et sachant que le rendu visuel sera different d'un joueur à l'autre si l'objet n'est pas physique car traité coté client.
Pas tout a fait .
Cela dépend :
  • si tu travailles en physique ou non
  • si ton objet est un linkset , si ton script est dans la prim root ou non

Exemple pour faire tourner autour de l axe local X pour une prim simple non liée
L objet est orienté initialement à des coordonnées Eulers de rotation <90,30,27>

En physique tu fairais
llTargetOmega( <1,0,0>, PI, 1.0);
exemple :
Code PHP:

integer tourne FALSE;


default
{

    
state_entry()
    {
       
// desactive la gravite
        
llSetPhysicsMaterial(GRAVITY_MULTIPLIER 0.0,0.0,0.0,0.0); 
        
llSetStatus(STATUS_PHYSICSTRUE);   
    }
    
touch_end(integer n)
    {
        if( 
tourne = !tourne )
        {
            
// on arrete le mouvement
            
llTargetOmega(ZERO_VECTOR01.0); 
            
llSetStatus(STATUS_PHYSICSFALSE);
            
// on se repositionne aux coordonnes de rotation intiale de l objet           
            
llSetRot(llEuler2Rot(<90,30,27>*DEG_TO_RAD));
            
// on active la rotation suivant l axe X local
            
llSetStatus(STATUS_PHYSICSTRUE);   
            
llTargetOmega( <1,0,0>, PI1.0);
        }
        else
        {
           
// on arrête le mouvement
            
llTargetOmega(ZERO_VECTOR01.0);
        }
    }

en non-physique tu fairais
llTargetOmega(llRot2Fwd(llGetLocalRot()), PI, 1.0);
exemple
Code PHP:

integer tourne FALSE;


default
{

    
state_entry()
    {
        
llSetStatus(STATUS_PHYSICSFALSE);   
    }
    
touch_end(integer n)
    {
        if( 
tourne = !tourne )
        {
            
llTargetOmega(ZERO_VECTOR01.0);            
            
llSetRot(llEuler2Rot(<90,30,27>*DEG_TO_RAD));

            
llTargetOmega(llRot2Fwd(llGetLocalRot()), PI1.0);
        }
        else
        {
            
llTargetOmega(ZERO_VECTOR01.0);
        }
    }

Si ton objet avait 2 prims , que la prim root n etait pas alignée avec les axes du monde mais a des coordonnées d eulers e <90,30,27>,
que ta seconde prim n était pas alignée avec la prim root ( par exemple avec une rotation locale en Y <0,45,0> par rapport à la prim root )
et que tu voulais tourner la seconde prim autour de son axe local X , tu fairais ,
avec un script dans la prim root :

llSetLinkPrimitiveParamsFast( 2, [ PRIM_OMEGA,
llRot2Fwd(llList2Rot(llGetLinkPrimitiveParams(2 , [ PRIM_ROT_LOCAL ]) ,0 ) )
, PI,1.0 ]);


Exemple :
Code PHP:

integer tourne FALSE;


default
{

    
state_entry()
    {
        
llSetStatus(STATUS_PHYSICSFALSE);   
    }
    
touch_end(integer n)
    {
        if( 
tourne = !tourne )
        {
            
llSetLinkPrimitiveParamsFast2, [ PRIM_OMEGAZERO_VECTOR0.0 ,1.0 ]);
            
// le script est dans la prim root , donc on tourne l objet en entier de <90,30,27> pour l orientation initiale
            
llSetLocalRot(llEuler2Rot(<90,30,27>*DEG_TO_RAD));
            
// la seconde prim fait un angle de 45 degres sur l axe local Y par rapport à la prim root
            
llSetLinkPrimitiveParamsFast(, [ PRIM_ROT_LOCALllEuler2Rot(<0,45,0> * RAD_TO_DEG )  ] );


            
llSetLinkPrimitiveParamsFast2, [ PRIM_OMEGA
            
llRot2Fwd(llList2Rot(llGetLinkPrimitiveParams(, [ PRIM_ROT_LOCAL ]) ,) )
            , 
PI,1.0 ]);
        }
        else
        {
            
llSetLinkPrimitiveParamsFast2, [ PRIM_OMEGAZERO_VECTOR0.0 ,1.0 ]);
        }
    }


Dernière modification par redpurple ; 05/03/2013 à 12h22.
si je tenais le con qui a inventé la roue...et les rotations...
superbe cour, merci, il est vrai que tu as paré à toutes les eventualités...alors que je m'etais borné à repondre à la question de base d'une simple sphère (a priori non linkée et non-physique, sans rotation initiale) qui tournait dans le mauvais sens ...mais du coup, j'ai appris aussi
Répondre

Connectés sur ce fil

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