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
- selezionate la pallina
- tasto destro e SIT sulla pallina
- 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);
|
Michel's Informazioni
|
Click per Ingrandire
|
Link VTeam
|
|
|
|