I would use Method 1 as I would not have to animate every gun model.
The problem you've encountered is, of course, the vec_to_angle command. As it converts the directional vector into Euler angles and those angles are not unique, you experience that "weird" behaviour. You need to use a third vertex and set the gun model's roll value manually so (f.i.) the gun's left side always faces the third vertex.

Have a look here Gimbal Lock, too.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends