
Код AS3:
private function updateRotation(e:Event):void
{
// РАСЧЕТ ВРАЩЕНИЯ ПУШКИ
dx = player.x - stage.mouseX;
dy = player.y - stage.mouseY;
// В КАКУЮ СТОРОНУ ПОВОРАЧИВАТЬ
var rotateTo:Number = getDegrees(getRadians(dx, dy));
// ПОВОРАЧИВАТЬ ОТ 0 ДО 360 ГРАД
if (rotateTo > player.gun.rotation + 180) rotateTo -= 360;
if (rotateTo < player.gun.rotation - 180) rotateTo += 360;
// ЛЕГКОСТЬ ВРАЩЕНИЯ
trueRotation = (rotateTo - player.gun.rotation) /rotateSpeedMax;
player.gun.rotation += trueRotation;
}
public function getRadians(delta_x:Number, delta_y:Number):Number
{
var r:Number = Math.atan2(delta_y, delta_x);
if (delta_y < 0)
{
r += (2 * Math.PI);
}
return r;
}
public function getDegrees(radians:Number):Number
{
return Math.floor(radians/(Math.PI/180));
}
вот функции отвечающие за поворот пушки player.gun - сама пушка