But I have been looking for something like this for awhile and finally found it inside a spider that Selea Core offered. Tested in a simple box in opensim but not in Kitely.
It makes the prim go up then down....I am sure smarter folx than I can find some uses for it-))
Code: Select all
// sensor variables
float sensor_interval = 2.0; // interval between scans in seconds
float sensor_range = 10.0; // range in meters
//movement variables
integer sky = 0;
float TOP = 4.6;
float SPEED = 2;
float target;
vector pos;
vector mpos;
default
{
on_rez(integer start_param) {
llResetScript();
}
state_entry()
{
pos = llGetPos();
if(sky == 0)
{
target = pos.z + TOP;
}
else
{
target = pos.z - TOP;
}
llSetTimerEvent(sensor_interval); //Repeats the sensor.
}
timer()
{
llSensor("",NULL_KEY,AGENT,sensor_range,PI);
}
sensor(integer num_detected)
{
state moving;
}
touch_end(integer n)
{
state moving;
}
state_exit()
{
llSetTimerEvent(0.0);
}
}
state moving
{
on_rez(integer start_param)
{
llResetScript();
}
state_entry()
{
llSetTimerEvent(1.0);
}
timer()
{
mpos = llGetPos();
if( mpos.z!=target )
{
if( mpos.z>target )
{
mpos.z = mpos.z - SPEED;
}
else
{
mpos.z = mpos.z + SPEED;
}
}
if( llFabs(mpos.z - target) < SPEED )
{
mpos.z = target;
llSetPos(mpos);
if(sky == 0)
{
sky = 1;
target = pos.z;
}
else
{
sky = 0;
llSetTimerEvent(0.0);
state default;
}
}
llSetPos(mpos);
}
}