function player_camera()
{
while (1)
{
if (key_w) {
me.pan = camera.pan;
camera.x = me.x-120*cos(me.pan);
camera.y = me.y-120*sin(me.pan);
} else {
camera.x = me.x-120*cos(camera.pan);
camera.y = me.y-120*sin(camera.pan);
}
camera.z = me.z+50;
wait (1);
}
}
var mouse_speed = 4;
var walking_speed = 6;
var running_speed = 10;
var gravity_force = 2;
var jump_strength = 10;
var feet_height = 40;
var anim_walk_speed = 5;
var anim_stand_speed = 5;
action player_action()
{
wait(1);
//c_updatehull(me, 1);
//c_setminmax(me);
set(me, POLYGON);
var gravity = 0;
player_camera();
var lks = 0;
while(me)
{
my.pan += mouse_speed * mouse_force.x;
VECTOR mov;
mov.x = key_w - key_s;
mov.y = key_a - key_d;
mov.z = 0;
if(key_shift)
vec_normalize(mov, running_speed * time_step);
else
vec_normalize(mov, walking_speed * time_step);
if(vec_length(mov) > 0)
{
ent_animate(me, "walkA", total_ticks * anim_walk_speed, ANM_CYCLE); // Adopt animation speed and name
}
else
{
ent_animate(me, "standA", total_ticks * anim_stand_speed, ANM_CYCLE); // Adopt animation speed and name
}
if(key_space != lks)
{
if(key_space)
gravity = jump_strength;
lks = key_space;
}
gravity -= gravity_force * time_step;
move_friction = 0;
c_move(me, mov, vector(0, 0, gravity * time_step), GLIDE | IGNORE_PASSABLE | IGNORE_PASSENTS | USE_POLYGON);
if(c_trace(my.x, vector(my.x, my.y, my.z - feet_height), IGNORE_ME | IGNORE_PASSABLE | IGNORE_PASSENTS | USE_POLYGON))
{
my.z = target.z + feet_height;
gravity = 0;
}
wait(1);
}
}