User:Michel Lemmon/Script Sittp

From Second Life Wiki
Jump to navigation Jump to search

Script Corso Elementare Sit/Teleport

Scopo: Conoscere le problematiche legate al “sit” e alle posizioni in secondlife, imparare come fare degli script per "sedersi" su un oggetto con e senza posizioni, costruire un elementare teleport.

Pre-Requisiti: rezzare box/sfere, muovere e ridimensionare oggetti, inserire semplici script helloworld, conoscere almeno un evento base (touch)

Durata Stimata: 60 minuti

Nota: Trovate qui di seguito le slide della formazione.

Agenda

  • Come ci si siede in SL
  • Uno script per sedersi SENZA la classica "pallina"
  • Sedersi con le posizioni
  • Semplice script di teletrasporto

Quanto è difficile “sedersi”

  • complicato
  • bisogna essere precisissimi
  • si rischia di essere rifiutati

Newbies e non solo hanno sempre problemi e il risultato tipico è di vedere avatars seduti in modo goffo e scortese.

Sedersi con un semplice script

  • box dimensioni 0.5, 0.5, 0.65 (ottimo sgabello).

Script:

 vector offset = <-0.36515, 0.02789, 0.61359>;
 // corrisponde alla rotazione di eulero <0,0,180> in gradi
 rotation rot = <0,0,1,0>; 
 default
 {
   state_entry()
     {
         llSitTarget(offset, rotation);
     }
 }

Rotazioni

Con Eulero le rotazioni si possono scrivere in questo modo: llEuler2Rot(<30°,30°,90°> * DEG_TO_RAD)  rotazione SL Ruota:

  • 30 gradi attorno all'asse X,
  • 30 gradi attorno all'asse y,
  • 90 gradi attorno all'asse z.

La rotazione <0,0,1,0> corrisponde a <0,0,180°>

Sedersi con la palla

Create, Rezzate una sfera, 0.1x0.1x0.1

  1. selezionate la pallina
  2. tasto destro e SIT sulla pallina
  3. ora potete usare le frecce e i tasti di rotazione tipici di build per muovervi come volete

Script

 float xpos = .3; float ypos = 0.01; float zpos = .35;float xrot = 0; float yrot = 0; float zrot = 0;
 key avatar;//Defines "avatar" as a key.
 default
 {
     state_entry()
 {                  
 llSitTarget(<xpos,ypos,zpos>,llEuler2Rot(<xrot,yrot,zrot> * DEG_TO_RAD));
      	  llSetAlpha(1,ALL_SIDES);
      	  llSetText("Siediti",<0,0,0>,1);      
     }
     changed(integer change){
         avatar = llAvatarOnSitTarget();
        if(change & CHANGED_LINK){
            if(avatar == NULL_KEY){
                 llResetScript();
            }

When sit on....

 else if(avatar){
                 llSetAlpha(0.0, ALL_SIDES);
                 llSetText("", <0.0, 0.0, 0.0>, 1.0);      
            }
         } 
     }
 }

Teleport Semplice

 default
 {
     state_entry()
     {
         llSetText("Teleport up",<1,1,1>,1);
         llSetSitText("Teleport");
         llSitTarget(<3,0,6>, ZERO_ROTATION);
     }
     changed(integer change)
     {
         llSleep(0.15);
         llUnSit(llAvatarOnSitTarget());
     }    
 }

Teleport più complessi:

Prendete le coordinate di arrive dalla mappa

 vector target=<160, 120,200>; // coordinate SLURL
 llSitTarget(target-llGetPos(),ZERO_ROTATION);

Ringraziamenti

Salahzar Stenvaag

Michel's Informazioni
Michel Lemmon2.jpg
Click per Ingrandire


Link VTeam

Michel Lemmon 20:00, 13 april 2008(PST)