Silberwelten Forum

Normale Version: Basteln mit Scripten und Prims bewegen
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo in die Runde,

dieses Script schiebt meine Platte auf der X-Achse von der Ausgangsposition nach rechts und wieder zurück.

[attachment=1932]

Dies könnte man sicher auch auf der Y-Achse machen.


Code:
integer es;
default
{
     state_entry()
     {
         es = 0;
     }
     touch_start(integer total_number)
     {
             vector er = llGetScale();
             if(es == 0)
             {
                 llSetPos(llGetLocalPos() - <0,er.y*0.9,0>);
                 es = 1;
             }
             else
             {
             llSetPos(llGetLocalPos() + <0,er.y*0.9,0>);
                 es = 0;
         }
     }
}


Einfach hier: "llSetPos(llGetLocalPos() - <0,er.y*0.9,0>)" das "y" zu ändern geht nicht.

Wie könnte man dieses Script umschreiben?


Coffee

DarkWolf

Hallo Lukas,

Du schießt mit Kanonen auf Fliegen Smile

https://echtvirtuell.blogspot.com/2011/1...ktion.html

Wirklich smooth und einfach nur geil Big Grin

DarkWolf

Halo Lukas,

ich habe mir bei dem DarkDance System auch die Karten mit den Vectoren gelegt.
Es ist immer <x,y,z>

Also in Deinem BsP
llSetPos(llGetLocalPos() + <er.y*0.9,0,0>);
Hallo Dark,

habe das Script nun wie folgt umgeschrieben:

Code:
integer es;
default
{
     state_entry()
     {
         es = 0;
     }
     touch_start(integer total_number)
     {
             vector er = llGetScale();
             if(es == 0)
             {
                 llSetPos(llGetLocalPos() + <1,er.x*0.9,0>);
                 es = 1;
             }
             else
             {
             llSetPos(llGetLocalPos() - <1,er.x*0.9,0>);
                 es = 0;
         }
     }
}


Dies garantiert die einwandfreie Funktion auf der von mir gewünschten Achse. Ich muss allerdings das Verhalten nach dem Sim-Neustart noch austesten.

Jetzt kann man die Schiebetür an jeder beliebigen Wand montieren.

Letzte Anpassung und fertig:

Code:
integer es;
default
{
     state_entry()
     {
         es = 0;
     }
     touch_start(integer total_number)
     {
             vector er = llGetScale();
             if(es == 0)
             {
                 llSetPos(llGetLocalPos() + <1.5,er.x*0.1,0>);
                 es = 2;
             }
             else
             {
             llSetPos(llGetLocalPos() - <1.5,er.x*0.1,0>);
                 es = 0;
         }
     }
}