AS3在多个方向拍摄

时间:2013-08-31 23:32:30

标签: actionscript-3 trigonometry

我正在尝试制作太空射击游戏,其中船可以旋转并向四面八方射击,现在,我知道三角学的基础知识,但我坚持这一点,我的大脑似乎被冻结所以我寻求你的帮助。

我有 Ship.as Turret.as ,每艘船都包含一定数量的炮塔,这是一个循环,负责为玩家的每个炮塔创建子弹输入及其位于Ship.as。

for (var i:int = 0; i < turrets.length; i++)
            {
                var _pcos:Number = Math.cos(angle / 180 * Math.PI);
                var _psin:Number = Math.sin(angle / 180 * Math.PI);
                var bulletX:Number = center.x + turrets[i].distance * _pcos;
                var bulletY:Number = center.y + turrets[i].distance * _psin;

                var bullet:BulletBase = new bulletClass(bulletX, bulletY, angle);
                layerBullets.add(bullet);

                bullets.push(bullet);
            }

变量中心是位于船只精灵正中心的点,角度是船只朝向鼠标旋转, turret.distance 是距离中心炮塔

这是Turret.as中发生的事情

public class Turret extends Point
{
    private var ship:Ship;
    public var distance:Number;
    public var angle:Number;
    /**
     *
     * @param   x position with angle 0
     * @param   y position with angle 0
     * @param   distance distance from center of ship to turret
     */
    public function Turret(x:Number = 0, y:Number = 0, ship:Ship = null)
    {
        super(x, y);
        this.ship = ship;
        this.x = x;
        this.y = y;
        var dx:Number = ship.center.x - x;
        var dy:Number = ship.center.y - y;

        angle = Math.atan2(dy, dx);

        distance = Math.sqrt(dx * dx + dy * dy);
    }

现在,这段代码发生的事情是子弹看起来像是从同一个方向射击,只有一颗子弹落后。

我不是数学专家,如果有人知道答案,我会非常感激。

1 个答案:

答案 0 :(得分:0)

var _pcos:Number = Math.cos((turret.angle + angle) / 180 * Math.PI);
var _psin:Number = Math.sin((turret.angle + angle) / 180 * Math.PI);

角度是船角