Erst bestimmst du die Sollorientierung:

turret_orient += (key_e-key_q)*5*time_step;
turret_orient %= 360;

Nun gleichst du den Wert langsam mit der nützlichen Funktion ang() sowie clamp() an:

turret_offset += clamp(ang(turret_orient-turret_offset),-0.5*time_step,0.5*time_step);

Ich habe dabei 5 bzw. 0.5 als Faktoren gewählt, da du time_step in deinem Code nicht benutztest/ vergessen hast und die Drehung dadurch bestimmt schneller als bei den Werten gedacht ablief (/ es durch *time_step langsamer, aber Frameraten-unabhängig wird).


"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