Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Aufzug Script
#1
Moin, hat jemand eine Idee, wie man das Ruckeln aus dem Script bekommt?
Die Bewegung ist alles andere als sanft gleitend.

PHP-Code:
// Menu controled on sit. Can also be controlled with local chat eg: /33 Floor2

integer CHANNEL 36// dialog channel
list MENU_MAIN = ["down","up"]; // the main menu
float BOTTOM 20.60// set platform ground floor height
float FLOOR_HEIGHT 6.1// alter to suit floor spacing
float SPEED 0.4
float target;
string sound "ba0101f0-e6da-43cc-a33b-61c172cbfebc";


default
{
    
state_entry()
    {
 
        
llListen(CHANNEL""NULL_KEY"");
        
llSitTarget(<0.00.00.95>,ZERO_ROTATION);
        
llSetText("Sit",<0.2,0,0>,0.79);
        
target BOTTOM;
        
llStopAnimation("sit");
        
llStopSound();
    }
   
    
listen(integer channelstring namekey idstring message)
    {
        
integer idx llListFindList(MENU_MAIN, [message]);
        if( 
idx!=-)
        {
                      
llLoopSound(sound1.0);
//            llSay(0,"Elevator heading " + message + "." );
            
target BOTTOM + (idx*FLOOR_HEIGHT);
            
state moving;
        }
    }


    
changed(integer change
    {
        if (
change CHANGED_LINK

        { 
       
        
key av llAvatarOnSitTarget();

       if (
av !=NULL_KEY)

//          if((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && llGetPermissionsKey() == av)

            
        
{
        
//          llStopAnimation("sit");
//          llStartAnimation("vb stand_5arms up p2");
          
llPlaySound(sound1.0);
          
llDialog(av"Where to?"MENU_MAINCHANNEL);       
        }
        
        else
       {
           
llStopSound();

//            llRequestPermissions(av, PERMISSION_TRIGGER_ANIMATION); 
                      
        
}  
   
    }
}
}

state moving
{
   
   
    
state_entry()
    {
        
llSetTimerEvent(0.1);
    }
   
    
timer()
    {

        
llSleep(0.25); // just to stop things happening instantly.        
        
vector pos llGetPos();

       
        if( 
pos.z!=target )
        {
            if( 
pos.z>target )
            {
                
pos.pos.SPEED;
            }
            else
            {
                
pos.pos.SPEED;
            }
        }
       
        if(  
llFabs(pos.target) < SPEED )
        {
            
pos.target;
            
llSetTimerEvent(0);
            
llSetPos(pos);
//          llSay(0,"Elevator has reached its target." );
            
state default;
        }   
       
        
llSetPos(pos);
       
    }

Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#2
Ich sehe keine Notwendigkeit, in die Bewegungsschleife einen Waitstate einzubauen:

llSleep(0.25); // just to stop things happening instantly.

Warum sollte das "instantly" ablaufen?
Die Bewegung wird doch über das Timer-Event getaktet.
Bau die Zeile einfach mal versuchsweise raus.
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
[-] The following 1 user says Thank You to Anachron for this post:
  • Xenos Yifu
Zitieren
#3
.... ich probiere es später und berichte, danke.
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#4
Das Ruckeln bleibt, einzig, ich nehme mir die Möglichkeit die Geschwindigkeit zu regulieren.
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#5
Die Geschwindigkeit sollte über den Timer-Interval zu steuern sein:
llSetTimerEvent(0.1);

Ausserdem ist da der Faktor SPEED zuständig
float SPEED = 0.4;
der die Schrittweite der Bewegung steuert ...

0.4 m / 0.1 s gibt dann ca. 4m/s ...

Wobei eine Schrittweite von 40cm schon von sich aus heftige Sprünge macht ... vielleicht mal da dran drehen?
Wer nicht weiss wohin er will, der kommt leicht woanders hin.
Zitieren
#6
.... ich schraube mal dran Big Grin
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren
#7
Ich habe llSleep(0.25); // just to stop things happening instantly. auskommentiert und
float SPEED = 0.4; auf 0,02 geändert.
Ein Kompromiss, nicht perfekt, aber deutlich besser.
Hypergrid : hg.osgrid.org:80:Xenotown
Web: https://laut.fm/xenolandia oder https://laut.fm/jazzvortex
[Bild: Radio-Xenolandia-qr-code-klein.png]
Page: https://Xenopolias.de

Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste