Uporabniška orodja

Orodja spletišča


f1

VOŽNJA F1

Besedilo

Besedilo za učitelja.

Nekaj kar vsak fant kmalu po začetku uporabe navideznega okolja zagotovo vpraša. Ali lahko vozim formulo? Lahko.

Z lsl lahko prestrežemo kontrole npr.: smernih tipk (http://wiki.secondlife.com/wiki/Category:LSL_Controls) in jih uporabimo za manevriranje vozila, pri čemer nam pomagajo vehicle funkcije (http://lslwiki.net/lslwiki/wakka.php?wakka=vehicles). Naredili bomo nekaj podobnega vendar manj dovršenega s S4O. Pri razširitvi problema bomo uporabili že napisano skripto na http://opensimulator.org/wiki/Vehicles

Besedilo naloge.

Za poljuben objekt (lahko tudi že narejen na: http://opensim-creations.com/category/builds/vehicles/) sestavite program, ki bo objekt in s tem vas, ker boste na objektu sedeli, ob pritisku na želeno tipko na tipkovnici premaknili naprej, nazaj, levo, desno, gor, dol. Torej, ustvarite funkcionalno vozilo.

Primer izvedbe

Učenec sedi na primitivnem objektu in ga usmerja.

Učenec sedi na F1 in jo usmerja.

Izvor naloge

BYO

Namigi

  • Namigi so podobni kot pri nalogi domači ljubljenček. Vstavljeni objekti so sestavljeni iz več manjših med seboj povezanih enostavnih objektov. Zelo težko je ugotoviti usmerjenost objekta zato so ukazi za premikanje lahko nepredvidljivi.
  • Najlažje je dodati nov objekt, pri katerem poznate kako se bo odzval na vaše ukaze in nato vstavljeni objekt le prilepite nanj.
  • Tudi sedenje na takšnih objektih je včasih težko.

Nepravilno sedenje avatarja.

Rešitev

Razširitev problema

  • Na zgornjem primeru uporabite skripto za sedenje. Lahko tudi dodate novi objekt, ga naredite nevidnega (Invisible) in v njega vstavite spodnjo kodo.

Lastnost Invisible - nevidni objekt

To bo zagotov rešilo problem nepravilnega sedenja.

// Basic pose ball script. by Dora Gustafson, Studio Dora 2010
// Free for anybody to read, copy, modify, compile, use, rip apart, trample on and flush
// v1.3 with Set Click Action
// Spremenjena - Franc Jakoš - 6.11.2013
// 
string animation = "Sedi";

default
{
    state_entry()
    {
        llSitTarget( <0.0, 0.0, 1.0>, llGetRot() ); // vedno se vsede v smeri objekta in ne ZERO_ROTATION
        llSetSitText(llToUpper(animation));
        llSetClickAction(CLICK_ACTION_SIT);
    }
    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            key sitter = llAvatarOnSitTarget();
            if(sitter != NULL_KEY) llRequestPermissions(sitter , PERMISSION_TRIGGER_ANIMATION);
            else
            {
                if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) llStopAnimation(animation);
                llSetAlpha(1.0, ALL_SIDES); // objekt je vedno viden
            }
        }
    }
    run_time_permissions(integer perm)
    {
        if ( perm & PERMISSION_TRIGGER_ANIMATION )
        {
            llSetAlpha(1.0, ALL_SIDES);
            llStartAnimation(animation);
            llStopAnimation("sit");
        }
    }
}
f1.txt · Zadnja sprememba: 2014/01/10 21:06 uporabnika franc