0

我正在尝试制作太空射击游戏,其中飞船能够旋转并朝各个方向射击,现在,我知道三角学的基础知识,但我卡在这一点上,我的大脑似乎被冻结了,所以我寻求你的帮助。

我有Ship.asTurret.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);
            }

变量center是位于船舶精灵精确中心的点,angle是船舶朝向鼠标的旋转,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);
    }

现在,这段代码发生的事情是子弹似乎是从同一个方向发射的,只有一颗子弹在后面。

我不是数学专家,如果有人知道答案,我将不胜感激。

4

1 回答 1

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

角度是船的角度

于 2013-09-05T19:39:32.897 回答