Уважаемые, столкнулся сегодня с такой проблемой: Есть герой, у него есть оружие, оружие "следит" за курсором, герой ходит вправо и влево. Задача такова: при движении влево, оружие может двигаться от 0 градусов до 90 градусов, при движении вправо - от 90 гр. до 180 гр. С движением влево - проблем нет, а вот при движении вправо - возникает одна, когда градус становится больше 180 (курсор опускается ниже ) оружие занимает положение в 90 градусов. Вот кусочек кода отвечающего за это:

Код AS3:
private function updateRotation(e:Event):void
{
var a:Point = new Point(hero.x, hero.y);
var b:Point = new Point(stage.mouseX, stage.mouseY);
var rotateTo:Number = anglePoisk(a, b);
hero.gun.rotation = rotateTo - 180;;
if ( hero.gun.rotation< minAngle)
{
a hero.gun.rotation = minAngle;
}else if ( hero.gun.rotation > maxAngle)
{
hero.gun.rotation = maxAngle;
}
}
public function anglePoisk (a:Point, b:Point, rodian:Boolean = true):Number
{
if(!rodian) return Math.atan2(b.y - a.y, b.x - a.x);
return (180/Math.PI)*Math.atan2(b.y - a.y, b.x - a.x);
}
При нажатии стрелок на клавиатуре я меняю minAngle и maxAngle
влево:

Код AS3:
minAngle = 0;
maxAngle = 90;
вправо:

Код AS3:
minAngle = 90;
maxAngle = 180;
Где моя ошибка, подскажите пожалуйста? Если кто то знает более лучшее решение этой проблемы - буду благодарен если поделитесь.