Hi comunity
I've another problem with PhysiX.
I have several Models in my Level.
The most of them are Objects with a Physik like this in my player1 action:
if(my.health<=0)
{
pXent_settype(my,NULL,NULL);
wait(1);
pXent_settype(my,PH_RIGID,PH_CAPSULE);
}
here is a code snippet :
action physxtest()
{
pXent_settype (my,PH_RIGID,PH_BOX); // set the physics entity type
pXent_setfriction (my,20); // set the friction on the ground
pXent_setdamping (my,50,50); // set the damping
pXent_setelasticity (my,100); // set the elasticity
}
I've 2 player-models that uses the "PH_CHAR" function.
All works fine if the player is alive.
But if the Player get killed the physik is stop working.
I want to swith the phyics-mode from my player from"PH_CHAR" to "PH_RIGID"
I read in the manual about that and so I used something like this:
if(my.health<=0)
{
pXent_settype(my,NULL,NULL);
wait(1);
pXent_settype(my,PH_RIGID,PH_CAPSULE);
}
Here is a short code snippet of my script.
void main()
{
ENTITY* temp;
ENTITY* map;
var terrain_chunk = 0;
video_mode = 11;
video_depth =32;
video_screen=2;
sound_vol = 100;
time_smooth =0.8 ;
max_particles = 50000;
max_entities = 2000;
fps_max = 30;
fps_min = 20;
fps_lock = 0; // time_step is now always 16/60 = 0.266 ticks #endif
tex_share = 1; // map entities share their textures
enable_polycollision = 2;
//d3d_autotransparency=1; //1st pixel is the overlay pixel
//d3d_near_models = 0.4;
d3d_antialias = 4;
preload_mode=0;
shadow_stencil = 0;
shadow_lod = 2;
physX_open();
pX_setccd (1);
pX_setunit(0.10); //0.7
pX_setgravity(vector(0,0,-9.81));
level_load("");
reset(camera,SHOW|AUDIBLE);
camera1.clip_near = 1;
camera1.clip_far = 1000;//if smaler it contains more
camera2.clip_near = 1;
camera2.clip_far = 1000;//if smaler it contains more
//Manage Level-creating //
map=ent_create("testarea_n.hmp",NULL,terrain_act);
set(map,SHADOW||OVERLAY|POLYGON);
....
}
action player1_act()
{
player1=me;
my.material=steel_mat;
set(my,POLYGON|CAST);
my.emask|=ENABLE_SHOOT|ENABLE_BLOCK|ENABLE_IMPACT|ENABLE_ENTITY|ENABLE_SCAN;
// my.push=100;
my.group = 3; //+1 by player2
my.health=100;
my.ammo_small=300;
my.ammo_rocket=50;
my.ammo_heavy=20;
my.team=p1;
my.alpha=100;
my.push=100;
// pX_setautodisable ( 8, 8 );
pXent_settype(me,PH_CHAR,PH_BOX);
pXent_setmass (my, 3); // and its mass
pXent_setfriction (my, 500); // set the friction
pXent_setdamping (my, 40, 40); // set the damping
pXent_setelasticity (my, 50); // set the elasticity
wait(1);
while(1)
{
if(my.health>0)
{
VECTOR* mov = vector(0,0,0);
if(key_cuu)mov.x=*time_step;
if(key_cud) mov.x=-7*time_step;
if(key_cuu==1&&key_cud==1){mov.x=0;}
if(key_home) mov.y= 7*time_step;
if(key_pgup) mov.y=-7*time_step;
if(key_home==1&&key_pgup==1){mov.y=0;}
ground_distanz=-100;
c_trace(my.x,ground_distanz,IGNORE_YOU|IGNORE_MODELS|IGNORE_PASSABLE|IGNORE_PUSH|USE_POLYGON);
if(ground_distanz>0)
{
push_force_z =1* time_step; //calculate an fall down
}
else
{
push_force_z=-15 * time_step;
mov.z=push_force_z*time_step;
vec_rotate(mov,player1.pan); pXent_movechar(me,mov,player1.pan,0);
//Thats the movement script
.....
}
//now the player get killed
else
{
pXent_settype(player1,NULL,NULL);
wait(1);
pXent_settype(player1,PH_RIGID,PH_CAPSULE);
}
}
If the player is dead and if I write the "pxent_settype(player1,NULL,NULL);" part
The whole Physik in the leel is stopping working!
For exampel The other Models with "PH_CHAR" cant move anymore.
I hope someone know how to fix it.
best regards
sebbi