action follow_path_smooth() {
my.skill1 = 1; //start with first node
path_getnode(my,my.skill1,my.skill2,NULL);
while(1) {
// close to node => get position of next node
my.skill4 = my.z;
if(vec_dist(my.skill2,my.x) < 16) {
my.skill1 = path_nextnode(my, my.skill1, 1);
path_getnode(my,my.skill1,my.skill2,NULL);
}
// turn to next node
vec_diff(my.skill5,my.skill2,my.x);
vec_to_angle(my.skill8,my.skill5);
my.pan += clamp(ang(my.skill8-my.pan)*0.25,-5,5)*time_step;
c_move(me,vector(2*time_step,0,0),nullvector,GLIDE | IGNORE_PASSABLE);
ent_animate(me, "walk", walk_percentage, ANM_CYCLE);
walk_percentage += 4 * time_step;
wait(1);
}
}