
Код AS3:
public class Main extends Sprite
{
private var gun:Sprite;
private var target:Sprite;
private var ab:Number = 50;
private var ad:Number = 80;
public function Main():void
{
gun = new Sprite();
target = new Sprite;
target.graphics.beginFill(0x80FF80);
target.graphics.drawCircle(0, 0, 10);
gun.graphics.lineStyle(10, 0xFF8080);
gun.graphics.lineTo(ad, 0);
gun.graphics.lineTo(ad, -ab);
gun.graphics.lineStyle(0, 0xC0C0C0);
gun.graphics.lineTo(ad, -500);
gun.x = 200;
gun.y = 200;
addChild(target);
addChild(gun);
addEventListener(Event.ENTER_FRAME, enterFrame);
}
private function enterFrame(e:Event):void
{
target.x = mouseX;
target.y = mouseY;
var tP:Point = new Point(target.x, target.y);
var gP:Point = new Point(gun.x, gun.y);
// расстояние
var dist:Number = Point.distance(tP, gP);
// направление
var dir:Number = Math.atan2(tP.y - gP.y, tP.x - gP.x);
// поправка
var w:Number = Math.asin(ad / dist);
gun.rotation = 180 / Math.PI * (dir - w) + 90;
}
}