whats wrong with my code i use c_trace to detect the floor and let my player stand on floor and go up stair but it doesn't work could some one help me. i couldn't figure it out whats the problem.
var a;
var b;
var perc=0;
var walk_percent=0;
var run_percent=0;
var cam_dist=150;
var temp2;
var camtilt;
var walkspeed[3]=0,0,0;
var runspeed[3]=0,0,0;
var temp3;
var temp4;
function camset()//3rd person camera
{
camtilt=clamp(camtilt,-85,85);
temp2=fcos(camtilt,-cam_dist);
vec_set(camera.x,vector(player.x+fcos(player.pan,temp2),player.y+fsin(player.pan,temp2),player.z+fsin(camtilt,-cam_dist)));
vec_set(temp2.x,vector(fcos(player.pan,-cam_dist),fsin(player.pan,-cam_dist),fsin(camera.tilt,-cam_dist)));
vec_set(temp.x,player.x);
vec_sub(temp.x,camera.x);
vec_to_angle(camera.pan,vector(temp.x,temp.y,temp.z));
//fix camera collision
if(c_trace(vector(player.x,player.y+5,player.z),vector(camera.x,camera.y+5,camera.z-5),ignore_me|ignore_passable|ignore_models)!=0)
{
vec_diff(temp.x,player.x,target.x);
vec_normalize(temp.x,20);
vec_set(camera.x,vector(target.x,target.y-5,target.z+5));
//vec_add(camera.x,temp.x);//active this will flash screen
}
}
function movement()//player's movenment
{
//if player press shift then speed up while move
if(key_w&&key_shift&&runspeed[0]!=0)
{
run_percent=(run_percent+9*time_step)%100;
ent_animate(my,"run",run_percent,anm_cycle);
c_move(my,runspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
else
{
if(key_s&&key_shift&&runspeed[0]!=0)
{
run_percent=(run_percent-9*time_step)%100;
ent_animate(my,"run",run_percent,anm_cycle);
c_move(my,runspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
}
if(key_a&&key_shift&&runspeed[1]!=0)
{
run_percent=(run_percent+9*time_step)%100;
ent_animate(my,"run",run_percent,anm_cycle);
c_move(my,runspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
else
{
if(key_d&&key_shift&&runspeed[1]!=0)
{
run_percent=(run_percent+9*time_step)%100;
ent_animate(my,"run",run_percent,anm_cycle);
c_move(my,runspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//if player press without shift then walk
if(key_w&&walkspeed[0]!=0&&key_shift==0)
{
walk_percent=(walk_percent+3*time_step)%100;
ent_animate(my,"walk",walk_percent,anm_cycle);
c_move(my,walkspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
else
{
if(key_s&&walkspeed[0]!=0&&key_shift==0)
{
walk_percent=(walk_percent-3*time_step)%100;
ent_animate(my,"walk",walk_percent,anm_cycle);
c_move(my,walkspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
}
if(key_a&&walkspeed[1]!=0&&key_shift==0)
{
walk_percent=(walk_percent+3*time_step)%100;
ent_animate(my,"walk",walk_percent,anm_cycle);
c_move(my,walkspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
else
{
if(key_d&&walkspeed[1]!=0&&key_shift==0)
{
walk_percent=(walk_percent+3*time_step)%100;
ent_animate(my,"walk",walk_percent,anm_cycle);
c_move(my,walkspeed,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
action player_action{//player action
if(player!=null){
player=me;
shift_sense=3;
}
while(1)
{
player=my;
perc=(perc+1*time_step)%100;
ent_animate(my,"stand",perc,anm_cycle);
//vec_set(camera.x,vector(player.x-40,player.y,player.z));
my.pan-=mouse_force.x;
//my.tilt+=mouse_force.y;
camera.pan+=mouse_force.x;
camera.tilt+=mouse_force.y;
camtilt=camera.tilt;
if(key_shift)
{
runspeed[0]=(key_w-key_s)*9*time_step;
runspeed[1]=(key_a-key_d)*9*time_step;
}
else
{
walkspeed[0]=(key_w-key_s)*4*time_step;
walkspeed[1]=(key_a-key_d)*4*time_step;
}
movement();
////trace from player to floor
vec_set(temp4,my.x);
temp4.z-=4000;
temp3.z=-c_trace(my,temp4,ignore_me|ignore_sprites|ignore_models|use_box);
c_move(my,temp3,nullvector,ignore_you|ignore_passable|ignore_push|activate_trigger|glide);
///////////////////////////////////
camset();
///rotate bones follow rotation of camera
vec_set(mouse_pos,mouse_cursor);
// temp.pan=(screen_size.x/2-mouse_pos.x);
// temp.pan=my.pan;
temp.tilt=camera.tilt;
temp.roll=0;
if(temp.tilt<=-45 || temp.tilt>=52)
{
if(temp.tilt<=-45)
{
temp.tilt=-45;
}
if(temp.tilt>=52)
{
temp.tilt=52;
}
}
// ent_bonereset(my,"head");
// ent_bonerotate(my,"head",vector(0,temp.tilt,0));
// ent_bonereset(my,"l_shoulder");
// ent_bonerotate(my,"l_shoulder",vector(0,temp.tilt,0));
// ent_bonereset(my,"r_shoulder");
// ent_bonerotate(my,"r_shoulder",vector(0,temp.tilt,0));
// ent_bonereset(my,"chest");
// ent_bonerotate(my,"chest",vector(0,temp.tilt/20,0));
//// ent_bonereset(my,"body");
//// ent_bonerotate(my,"body",vector(temp.pan/5,0,0));
// ent_bonereset(my,"bally");
// ent_bonerotate(my,"bally",vector(0,temp.tilt/40,0));
/////////////////////////////////////////////////////////////////////////////////////
wait(1);
}
}