[recherche] Script on/off

Répondre
Partager Rechercher
Bonjour à tous,

Voilà, je cherche un script assez simple je pense.
Le script fait tourner l'objet et lorsque l'on clique dessus il s'arrête de tourner, puis un deuxième clique permet de le faire tourner à nouveau.

Merci bcp.
Ca devrait marcher ca aussi

Code PHP:

integer tourne FALSE;
default
{
touch_start(integer total_number)
{
llTargetOmega(<1.03.00.5>, TWO_PI, (float)(tourne = !tourne));
}

Citation :
Publié par Magic Cat
Ca devrait marcher ca aussi

Code PHP:

integer tourne FALSE;
default
{
touch_start(integer total_number)
{
llTargetOmega(<1.03.00.5>, TWO_PI, (float)(tourne = !tourne));
}

Je faisais ca avant aussi .. mais d'apres le wiki :

Citation :
Publié par Wiki
Une vitesse nulle avec un gain non nul ne supprime pas la rotation mais tente de ramenner celle ci a une vitesse nulle : Pour supprimer la rotation il faut donc utiliser une vitesse et un gain nul par exemple : llTargetOmega(ZERO_VECTOR, 0, 0);
C'est plus light du coup
Bon je joue le médiateur :

Code PHP:

integer tourne FALSE;
default
{
    
touch_start(integer total_number)
    {
        
llTargetOmega(<1.03.00.5>, (float)(tourne = !tourne) * TWO_PI, (float)tourne);
    }

Bonjour !

Je cherche un script du même type mais qui permet de choisir entre deux vitesses (lente/rapide ou lente/moyenne).

Quelle fonction faut il ajouter au script ?

merci
Citation :
Publié par Ma-ya
Bonjour !

Je cherche un script du même type mais qui permet de choisir entre deux vitesses (lente/rapide ou lente/moyenne)
Citation :
Publié par Ma-ya
Quelle fonction faut il ajouter au script ?
merci


Il faut déjà savoir ce qui règle la vitesse de rotation. Quand on écrit :

llTargetOmega(<1.0, 3.0, 0.5>, TWO_PI, 1.0);

La vitesse est le produit :
<1.0, 3.0, 0.5> * TWO_PI en radians par secondes.

Il est d'ailleurs conseillé de "normaliser" (c'est à dire le ramener à l'unité) le vecteur de l'axe pour déduire facilement la vitesse de rotation. Dans ton cas avec la fonction llVecNorm on a :

<1.0, 3.0, 0.5> = <0.31235, 0.93704, 0.15617>

L'axe est le même mais au moins le vecteur est normalisé et on se retrouve là avec une vitesse de rotation de 2 PI radians par seconde. Pour définir une autre vitesse il suffit de jouer sur le deuxième paramètre. Par exemple pour avoir PI radians par seconde il suffit de mettre... PI. C'est beaucoup plus simple comme ça.

Pour en revenir à ta question il suffit de créer un fonction avec comme paramètre par exemple un coefficient qui règle la vitesse. Par exemple :

Code PHP:

rot (float fCoef)
{
    
llTargetOmega(<0.312350.937040.15617>, TWO_PI fCoef1.0);



Hello,

J'ai maintenant un script de rotation "on / off " (merci !).

Mon objet est composé de plusieurs prims liés, et seul le prim scripté doit tourner.

Quelle fonction dois-je ajouter au script de rotation ?

llGetLocalRot ?
11GetLinkedNumber ?


Citation :
Publié par Ma-ya
Hello,

J'ai maintenant un script de rotation "on / off " (merci !).

Mon objet est composé de plusieurs prims liés, et seul le prim scripté doit tourner.

Quelle fonction dois-je ajouter au script de rotation ?

llGetLocalRot ?
11GetLinkedNumber ?


rien tant que ta prim scriptée n'est pas la root : autrement, t'as tout le build qui tourne.
....................

Dernière modification par Solo Davies ; 19/01/2012 à 13h24.
Cool ! ça marche !

J'étais persuadée qu'il fallait que le script soit dans le prim racine (la honte !!).

Comme quoi...des années de build, et toujours aussi nulle en script


Merci encore
Coucou,

Je me demandais s'il était envisageable (et je sais que ça l'est, mais je sais pas faire) d'avoir une prim attachée qui se mette à tourner quand on clique sur la prim "root".

Merci de vos astuces
Il est vrai que j'ai été assez confuse. Je vais tenter d'être tout à fait claire :

J'ai un objet de 3 prims, dont une root, évidemment. C'est un pédalier de vélo : le pédalier (root) et deux pédales.

Par le script proposé plus haut, un clic sur l'objet fait tourner l'objet, c'est à dire le root accompagné par les 2 autres prims, immobiles relativement au root, mais mobiles dans l'absolu.

Ce que j'aimerais, c'est que ce clic sur l'objet global déclenche non seulement la rotation du root, mais aussi la rotation relative des deux autres objets (rotation des pédales qui restent ainsi toujours parallèles au sol).

Je suppose que c'est un peu le principe d'un interrupteur : clic sur un objet A qui allume la prim A1. Là je veux cliquer sur l'objet A pour faire tourner A, mais également A1 et A2.

Est-ce plus clair ?

Edit : la gentille personne qui m'aidera aura le droit à un superbe vélo d'appartement ^^
Citation :
Publié par Tasia
Il est vrai que j'ai été assez confuse. Je vais tenter d'être tout à fait claire :

J'ai un objet de 3 prims, dont une root, évidemment. C'est un pédalier de vélo : le pédalier (root) et deux pédales.

Par le script proposé plus haut, un clic sur l'objet fait tourner l'objet, c'est à dire le root accompagné par les 2 autres prims, immobiles relativement au root, mais mobiles dans l'absolu.

Ce que j'aimerais, c'est que ce clic sur l'objet global déclenche non seulement la rotation du root, mais aussi la rotation relative des deux autres objets (rotation des pédales qui restent ainsi toujours parallèles au sol).

Je suppose que c'est un peu le principe d'un interrupteur : clic sur un objet A qui allume la prim A1. Là je veux cliquer sur l'objet A pour faire tourner A, mais également A1 et A2.

Est-ce plus clair ?

Edit : la gentille personne qui m'aidera aura le droit à un superbe vélo d'appartement ^^
Mais ton pédalier n'est-il pas lié au vélo ?

Mais pour répondre strictement à ta question voilà avec un pédalier en root et les deux pédales en child. Je suis parti du principe que le pédalier tourne selon l'axe X, pour un autre axe la modification n'est pas bien difficile. Il faut initialiser le script avec les pédales bien disposées parallèles au sol... Le script est à mettre dans le root, mais ça doit fonctionner dans n'importe quel prim...

Code PHP:

integer on;
rotation rot2;
rotation rot3;
default
{
    
state_entry()
    {
        
rot2 llList2Rot(llGetLinkPrimitiveParams(2, [PRIM_ROTATION]), 0);
        
rot3 llList2Rot(llGetLinkPrimitiveParams(3, [PRIM_ROTATION]), 0);
    }
    
touch_start(integer total_number)
    {
        if(
on)
            
llSetTimerEvent(.0);
        else
            
llSetTimerEvent(.04);
        
on = !on;

    }
    
timer()
    {
        
llSetLinkPrimitiveParamsFast(1, [PRIM_ROTATIONllEuler2Rot(<5.0.0.0> * DEG_TO_RAD) * llGetRot()]);
        
llSetLinkPrimitiveParamsFast(2, [PRIM_ROTATIONrot2 llGetRootRotation() / llGetRootRotation()]);
        
llSetLinkPrimitiveParamsFast(3, [PRIM_ROTATIONrot3 llGetRootRotation() / llGetRootRotation()]);
    }

Merci pour le script ! Je l'essaie et je te dis. Le pédalier n'est pas lié au vélo, car sans cela ce serait impossible d'avoir plusieurs prims en rotation relative, n'est-il pas vrai ?
Citation :
Publié par Tasia
Merci pour le script ! Je l'essaie et je te dis. Le pédalier n'est pas lié au vélo, car sans cela ce serait impossible d'avoir plusieurs prims en rotation relative, n'est-il pas vrai ?
Pas vrai
Je me suis mal exprimée : il faut dans ce cas rajouter des prims transparentes pour définir le centre de la rotation des prims qui sont en rotation relative, non ?
Citation :
Publié par Tasia
Je me suis mal exprimée : il faut dans ce cas rajouter des prims transparentes pour définir le centre de la rotation des prims qui sont en rotation relative, non ?
Je n'ai jamais dit que c'était simple, à l'adaptation de la rotation s'ajoute le positionnement, il faut faire un changement de repère pour ramener l'origine des axes au niveau du pédalier.
Je viens de tester ton script qui fonctionne mais qui n'est pas adapté à mon système car les deux pédales ont un placement en degré de 0.0,0.0,90.0. Et je ne peux pas les orienter différemment car ce sont des sculpts

C'est faisable ?
Citation :
Publié par bestmomo
Je n'ai jamais dit que c'était simple, à l'adaptation de la rotation s'ajoute le positionnement, il faut faire un changement de repère pour ramener l'origine des axes au niveau du pédalier.
Bigre... C'est cher ?
Citation :
Publié par Tasia
Je viens de tester ton script qui fonctionne mais qui n'est pas adapté à mon système car les deux pédales ont un placement en degré de 0.0,0.0,90.0. Et je ne peux pas les orienter différemment car ce sont des sculpts

C'est faisable ?
Désolé j'avais glissé un petit bug dans le script, maintenant il fonctionne quelle que soit l'orientation globale de la pédale
Répondre

Connectés sur ce fil

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