If you use built-in speeds like hspeed and vspeed, direction should update automatically for you.
The situation you described would happen when you use custom speeds like the kind Spalding or HeartBeast do in their videos. You would use something like point_direction(0, 0, hsp, vsp) instead, where hsp and vsp are the custom speed variables.
Another situation is when things are manually positioned, such as when traveling on a path or when using custom speeds. In that case, you would use point_direction(xprevious, yprevious, x, y) in the End Step event.