Posted By: Random
converted physX car - 05/03/11 19:47
I converted a physical car (it was ode) to physX.
Someewere I read a few times that some peapol would like to see that script converted.
So if anybody needs it;
Random
Someewere I read a few times that some peapol would like to see that script converted.
So if anybody needs it;
Click to reveal..
var constr_front_left;
var constr_front_right;
var constr_back_left;
var constr_back_right;
VECTOR mom_speed;
var max_angle;
var stear_contr;
var max_speed = 1500;
var ang_force;
var speed_contr;
ENTITY* chassis;
function wheel_physics_init()
{
set (my, SHADOW);
pXent_settype (my, PH_RIGID, PH_SPHERE);
pXent_setmass (my, 30, PH_SPHERE);
pXent_setgroup (my, 2);
pXent_setfriction (my, 100);
pXent_setdamping (my, 20, 20);
pXent_setelasticity (my, 0, 100);
}
function front_tyre_left()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_front_left, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_front_left, nullvector, nullvector, nullvector);
}
function front_tyre_right()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_front_right, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_front_right, nullvector, nullvector, nullvector);
}
function back_tyre_left()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_back_left, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_back_left, nullvector, nullvector, nullvector);
}
function back_tyre_right()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_back_right, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_back_right, nullvector, nullvector, nullvector);
}
action chassis()
{
my.armor = 100;
chassis = my;
set (chassis, SHADOW);
pXent_settype (chassis, PH_RIGID, PH_BOX);
pXent_setmass (chassis, 15, PH_BOX);
pXent_setgroup (chassis, 2);
pXent_setfriction (chassis, 20);
pXent_setdamping (chassis, 5, 5);
pXent_setelasticity (chassis, 10, 100);
ent_create ("car_tyre_left.mdl", vector (chassis.x - 65, chassis.y - 45, chassis.z - 20), back_tyre_left);
ent_create ("car_tyre_right.mdl", vector (chassis.x - 65, chassis.y + 45, chassis.z - 20), back_tyre_right);
ent_create ("car_tyre_left.mdl", vector (chassis.x + 65, chassis.y - 45, chassis.z - 20), front_tyre_left);
ent_create ("car_tyre_right.mdl", vector (chassis.x + 65, chassis.y + 45, chassis.z - 20), front_tyre_right);
while(my.armor>0)
{
stear_contr = (key_d - key_a);
max_angle += stear_contr * 3 * time_step;
max_angle = clamp (max_angle, -30, 30);
if (stear_contr != 0)
{
pXcon_setparams2 (constr_front_left, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
pXcon_setparams2 (constr_front_right, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
}
else
{
max_angle = max_angle * (1 - (0.25 * time_step));
if (abs(max_angle) < 1)
max_angle = 0;
pXcon_setparams2 (constr_front_left, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
pXcon_setparams2 (constr_front_right, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
}
speed_contr = (key_w - key_s);//w = 1, s = -1, w & s = 0
ang_force = speed_contr * 1000 * time_step;
pXcon_setmotor (constr_back_left, nullvector, vector(-ang_force, max_speed, 0), nullvector);
pXcon_setmotor (constr_back_left, nullvector, vector(-ang_force, max_speed, 0), nullvector);
camera.x = chassis.x - 250 * cos(chassis.pan);
camera.y = chassis.y - 250 * sin(chassis.pan);
camera.pan = chassis.pan;
camera.z = chassis.z + 50;
camera.tilt = -15;
wait(1);
}
}
var constr_front_right;
var constr_back_left;
var constr_back_right;
VECTOR mom_speed;
var max_angle;
var stear_contr;
var max_speed = 1500;
var ang_force;
var speed_contr;
ENTITY* chassis;
function wheel_physics_init()
{
set (my, SHADOW);
pXent_settype (my, PH_RIGID, PH_SPHERE);
pXent_setmass (my, 30, PH_SPHERE);
pXent_setgroup (my, 2);
pXent_setfriction (my, 100);
pXent_setdamping (my, 20, 20);
pXent_setelasticity (my, 0, 100);
}
function front_tyre_left()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_front_left, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_front_left, nullvector, nullvector, nullvector);
}
function front_tyre_right()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_front_right, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_front_right, nullvector, nullvector, nullvector);
}
function back_tyre_left()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_back_left, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_back_left, nullvector, nullvector, nullvector);
}
function back_tyre_right()
{
wheel_physics_init();
pXcon_add(PH_WHEEL, chassis, my);
pXcon_setparams1 (constr_back_right, my.x, vector (0,0,1), nullvector);
pXcon_setparams2 (constr_back_right, nullvector, nullvector, nullvector);
}
action chassis()
{
my.armor = 100;
chassis = my;
set (chassis, SHADOW);
pXent_settype (chassis, PH_RIGID, PH_BOX);
pXent_setmass (chassis, 15, PH_BOX);
pXent_setgroup (chassis, 2);
pXent_setfriction (chassis, 20);
pXent_setdamping (chassis, 5, 5);
pXent_setelasticity (chassis, 10, 100);
ent_create ("car_tyre_left.mdl", vector (chassis.x - 65, chassis.y - 45, chassis.z - 20), back_tyre_left);
ent_create ("car_tyre_right.mdl", vector (chassis.x - 65, chassis.y + 45, chassis.z - 20), back_tyre_right);
ent_create ("car_tyre_left.mdl", vector (chassis.x + 65, chassis.y - 45, chassis.z - 20), front_tyre_left);
ent_create ("car_tyre_right.mdl", vector (chassis.x + 65, chassis.y + 45, chassis.z - 20), front_tyre_right);
while(my.armor>0)
{
stear_contr = (key_d - key_a);
max_angle += stear_contr * 3 * time_step;
max_angle = clamp (max_angle, -30, 30);
if (stear_contr != 0)
{
pXcon_setparams2 (constr_front_left, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
pXcon_setparams2 (constr_front_right, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
}
else
{
max_angle = max_angle * (1 - (0.25 * time_step));
if (abs(max_angle) < 1)
max_angle = 0;
pXcon_setparams2 (constr_front_left, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
pXcon_setparams2 (constr_front_right, vector (max_angle, max_angle, 0), nullvector, vector (95000, 500, 0));
}
speed_contr = (key_w - key_s);//w = 1, s = -1, w & s = 0
ang_force = speed_contr * 1000 * time_step;
pXcon_setmotor (constr_back_left, nullvector, vector(-ang_force, max_speed, 0), nullvector);
pXcon_setmotor (constr_back_left, nullvector, vector(-ang_force, max_speed, 0), nullvector);
camera.x = chassis.x - 250 * cos(chassis.pan);
camera.y = chassis.y - 250 * sin(chassis.pan);
camera.pan = chassis.pan;
camera.z = chassis.z + 50;
camera.tilt = -15;
wait(1);
}
}
Random