Das haut schonmal absolut nicht hin.
Ich berechne erst den Winkel mit der oben geposteten Funktion und passe ihn dann an das aktuelle Vielfache von 2*PI an. Wenn man die Spielfigur paar Mal im Kreis bewegt, wird der Yaw Winkel nicht resettet, sondern erhöht sich einfach um eine komplette Umdrehung.
Zum anpassen des berechneten Winkels habe ich mir folgendes geschrieben:
Delphi-Quellcode:
procedure NormalizeAimAngle(var Pitch, Yaw: Single);
var
T: Integer;
begin
T := Round(Camera.Yaw / (PI));
Yaw := Yaw + (PI * T);
if (T mod 2) <> 0 then
begin
Yaw := Yaw + PI;
end;
end;