hmm. it seems to nearly work. but only between -90 and 90.

if the angle isnt between -90 and 90 then the ai just rotates until it is again...

[pascal]procedure TEnemyRunAwayState.Update(aGameObject: TObject);
var
Tank: TNPCTank;

Angle: Single;

T: TVector3f;
U: TVector3f;

D: TTransformations;

begin
Tank := aGameObject as TNPCTank;

T := AffineVectorMake(Tank.Matrix[3]);
U := AffineVectorMake(GUserTank.Matrix[3]);

Angle := ArcTan2(U[0] - T[0], U[2] - T[2]);

MatrixDecompose(Tank.Matrix, D);
Angle := D[ttRotateY] - Angle;

if Angle < 0 then
Tank.Steer := 1
else
Tank.Steer := -1;
end;[/pascal]
any idea why?