Hi,

your almost there, but you need to put the following code in your while loop, NOT before it, cause otherwise it will be only played once (hence why your unit only rotates to one point):

Code:
vec_set(to, mouse_dir3d);
vec_normalize(to, 500); //play a bit with 500
vec_add(to, mouse_pos3d);
vec_diff(temp_dir, to, my.x);
vec_to_angle(offset_angle, temp_dir);



So you will get in your case:

Code:
function move_unit()
{
my = UnitThatIWantToMove;

VECTOR to;
VECTOR temp_dir;
ANGLE offset_angle;

while(1)
{
vec_set(to, mouse_dir3d);
vec_normalize(to, 500); //play a bit with 500
vec_add(to, mouse_pos3d);
vec_diff(temp_dir, to, my.x);
vec_to_angle(offset_angle, temp_dir);
my.pan += ang(offset_angle.pan - my.pan) * 0.2 * time_step;
wait(1);
}

}



Now when the unit has its right angle, let it move through c_move or such. If you want to let the unit rotate faster, change 0.2 in the "my.pan += ang(offset_angle.pan - my.pan) * 0.2 * time_step;" line.