[script testé] Porte avec fermeture automatique

1 post / 0 new
#1 Wed, 20/03/2013 - 13:03
No picture available
Archael Magic

[script testé] Porte avec fermeture automatique

Vous voulez une porte qui se referme après votre passage ? Facile ! Voici le script qui permettra de le faire. Deux méthodes de base permettent d'utiliser ce script, avec un peu d'entrainement et d'imagination, vous trouverez d'autre usages à ce script, je l'ai utilisé sur des sphères mais je vous laisse découvrir les autres possibilités par vous même. Pour débuter je vous exposerai ici les deux techniques de base.

Méthode 1 : Cette méthode ouvrira la porte soit au clic, soit quand votre avatar entrera en contact avec celle-ci. (sans charnière : 1 primitive)

Créez une primitive cubique
Découpez votre cube en allant sur l'onglet "OBJET", dans les variables "Découpe du tracé" (les champs D et F) mettez les valeurs suivantes : D = 0.375 et F = 0.875
Vous avez maintenant un demi-cube...
Etirez le façon à ce que ce demi-cube prenne la forme et la taille de votre porte, n'oubliez pas que dans ce cas, le centre du cube (qui se trouve maintenant sur le côté de votre demi-cube) sera la charnière de votre porte. Votre porte est prête ? Il ne reste plus qu'à l'animer ...
Ouvrez l'onglet "Contenu"
Cliquez sur "nouveau script"
Remplacez le contenu du fichier script par celui que vous trouverez ci-dessous...

Méthode 2 : Cette méthode permettra de décaler l'axe de pivotement mais l'ouverture à la collision ne fonctionnera plus. (avec charnière : 2 primitives)

Créez un cylindre
Etirez le cylindre de façon à le rendre quasiment invisible
Vous avez votre charnière

Créez un cube
Etirez votre cube aux dimensions souhaitées pour votre porte
Vous avez votre porte

Editez votre charnière
Insérez le script dedans, de la même façon qu'expliqué dans la première partie de ce mini tutoriel.
Placez votre charnière dans l'axe de pivotement voulu de votre porte.
Editez votre porte
Appuyez sur la touche "shift" de votre clavier et sélectionnez votre charnière
Liez le tout (ctrl+L) et le tour est joué

ATTENTION ! DANS LES DEUX CAS, NE LIEZ PAS VOTRE PORTE AU RESTE DE VOTRE BATIMENT, SINON, TOUT LE BATIMENT RISQUE DE BOUGER !!!

Là encore j'ai traduit le nécessaire pour l'usage des francophones ...

 

// Ouverture au toucher.
// Ouverture à la collision.
// Fermeture automatique via un timer.
// Emet un son à l'ouverture et à la fermeture.

// Réglages que vous pouvez changer.

float  delay = 3.0;                         // Temps d'attente en secondes avant la fermeture automatique
float  direction = 1.0;                     // Régler sur 1.0 ou -1.0 pour définir la direction d'ouverture
float  volume = 0.5;                      // 0.0 pour muet, 1.0 pour un son maximal

// Vous pouvez changer ces variables pour inclure l'UUID de vos propres sons entre les guillemets

key    open_sound  = "";
key    close_sound = "";

// Initialisation du script, ne touchez à rien après cette ligne si vous ne savez pas ce que vous faites ...

default {

    state_entry() {
        state open;
    }
}

state closed {

    state_entry() {
        llTriggerSound(close_sound, volume);
        llSetRot(llEuler2Rot(<0, 0, direction * PI_BY_TWO>) * llGetRot());

    }

    touch_start(integer total_number) {
        state open;
    }

    collision_start(integer total_number)
    {
        state open; 
    }

    timer()
    {
        llSetTimerEvent(0.0);
    }
}


state open {

    state_entry() {
        llTriggerSound(open_sound, volume);
        llSetRot(llEuler2Rot(<0, 0, -direction * PI_BY_TWO>) * llGetRot());

        llSetTimerEvent(delay); 
    }

    on_rez(integer start_param) {
        state closed;
    }

    touch_start(integer total_number) {
        state closed;
    }

    collision_start(integer total_number)
    {
    }

    timer()
    {
        llSetTimerEvent(0.0);
        state closed;
    }
}