Sei sulla pagina 1di 11

SL Mentori Italiani

Aprile 2008
Corso Elementare
(script/build)
SIT-TELEPORT
Salahzar Stenvaag
Questo corso
• Durata: circa 60 minuti
• 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.
Prerequisiti per questa lezione:
– rezzare box/sfere
– muovere e ridimensionare oggetti
– inserire semplici script helloworld
– conoscere almeno un evento base (touch)
Agenda
• Come ci si siede in SL
• Uno script per sedersi SENZA la
classica "pallina"
• Sedersi con le posizioni
• Semplice script di teletrasporto
1. 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”.
2. 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
vector 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°>
3. Sedersi con la palla
create una sfera, 0.1x0.1x0.1
 
a- selezionate la pallina
b- tasto destro e SIT sulla pallina
c- 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 ==
llAvatarOnSitTarget()){
llSetAlpha(0,ALL_SIDES);
llSetText("",<0,0,0>,1);

}
}
}
}
4a. 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());
}
}
4.b Teleport più complessi:
Prendete le coordinate di arrive dalla
mappa
 
vector target=<160, 120,200>; //
coordinate SLURL
 
llSitTarget(target-
llGetPos(),ZERO_ROTATION);
 
 

Potrebbero piacerti anche