here an example code of an entity looking at the player constantly.
Everything works fine and here. (a bit slow but ok):
action look_at_player()
{
while(1)
{
VECTOR temp_vec;
ANGLE temp_angle;
ANGLE head_angle;
vec_set(temp_vec,player.x);
vec_sub(temp_vec,my.x);
vec_to_angle(temp_angle,temp_vec);
vec_sub(temp_angle, my.pan);
//head
head_angle.pan = temp_angle.pan;
head_angle.tilt = temp_angle.tilt;
head_angle.roll = 0;
head_angle.tilt = clamp(head_angle.tilt, -80, 80);
head_angle.pan = clamp(head_angle.pan, -90, 90);
ent_bonereset(my,"Head");
ent_bonerotate(my,"Head",head_angle);
wait(1);
}
}
But now I don`t only need the head to rotate, but also the (lets say) right arm and left arm.
Then it would look like this;
action look_at_player()
{
while(1)
{
VECTOR temp_vec;
ANGLE temp_angle;
ANGLE head_angle;
ANGLE right_arm_angle;
ANGLE left_arm_angle;
vec_set(temp_vec,player.x);
vec_sub(temp_vec,my.x);
vec_to_angle(temp_angle,temp_vec);
vec_sub(temp_angle, my.pan);
//head
head_angle.pan = temp_angle.pan;
head_angle.tilt = temp_angle.tilt;
head_angle.roll = 0;
ent_bonereset(my,"Head");
ent_bonerotate(my,"Head",head_angle);
//right arm
right_arm_angle.pan = temp_angle.pan;
right_arm_angle.tilt = temp_angle.tilt;
right_arm_angle.roll = 0;
ent_bonereset(my,"right_arm");
ent_bonerotate(my,"right_arm",right_arm_angle);
//left arm
left_arm_angle.pan = temp_angle.pan;
left_arm_angle.tilt = temp_angle.tilt;
left_arm_angle.roll = 0;
ent_bonereset(my,"left_arm");
ent_bonerotate(my,"left_arm",left_arm_angle);
wait(1);
}
}
And that is a real fps killer.
Is there any way to save fps in that example?
I needs alot more ghosts to stop this fps packman!