Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Floating Vehicle

Keno Pontoppidan
Registered User
Join date: 20 Oct 2005
Posts: 75
03-24-2007 06:38
Hello, I have made myself a little tank and I'm using a vehicle script I have now the script is great except one problem, The tank seems to have no weight at all whenever I drive off a cliff for example the tank just gently floats down like a feather. Heres the script I'm using.
CODE

integer loopsnd = 0;

default
{
state_entry()
{
llSetSitText("Drive");
llSitTarget(<0,0,1>, ZERO_ROTATION);


llSetCameraEyeOffset(<-10.0, -0.00, 6.0>);
llSetCameraAtOffset(<3.0, 0.0, 2.0>);


llSetVehicleFlags(-1);
llSetVehicleType(VEHICLE_TYPE_CAR);

llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP | VEHICLE_FLAG_LIMIT_MOTOR_UP | VEHICLE_FLAG_LIMIT_ROLL_ONLY);


llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.02);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.05);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.01);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.01);

llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 0.02);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.02);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.02);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.01);


llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <5.0, 1.009, 0.1>);
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <5.0, 1.009, 0.1>);


llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 0.1);


llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 0.0);
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.0);

llCollisionSound("", 0.0);
}

changed(integer change)
{

if (change & CHANGED_LINK)
{
key agent = llAvatarOnSitTarget();

if (agent)
{
if (agent != llGetOwner())
{
llSay(0, "You aren't the owner");
llUnSit(agent);
llPushObject(agent, <0,0,10>, ZERO_VECTOR, FALSE);
}

else
{
llSetStatus(STATUS_PHYSICS, TRUE);
llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
}
}
else
{
llSetStatus(STATUS_PHYSICS, FALSE);
llReleaseControls();
llStopAnimation("sit_ground");
}
}

}

run_time_permissions(integer perm)
{
if (perm)
{
llStopAnimation("sit");
llStartAnimation("sit_ground");
llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);
}
}
control(key id, integer level, integer edge)
{

vector angular_motor;

if (level & edge & CONTROL_FWD)
{

llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <20,0,0>);

}
else if ((edge & CONTROL_FWD) && ((level & CONTROL_FWD) == FALSE))
{

llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0,0,0>);

loopsnd = 0;
}
else if (level & CONTROL_FWD)
{

llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <5,0,0>);


}

if(level & CONTROL_BACK)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-5,0,0>);
}
if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{
angular_motor.x += 5;
angular_motor.z -= 5;
}
if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{
angular_motor.x -= 5;
angular_motor.z += 5;
}
if(level & (CONTROL_UP))
{
angular_motor.y -= 500;
}

llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);
}

}
Sterling Whitcroft
Registered User
Join date: 2 Jul 2006
Posts: 678
03-24-2007 17:32
Perhaps your tank is filled with Helium?