我正在尝试制作太空射击游戏,其中飞船能够旋转并朝各个方向射击,现在,我知道三角学的基础知识,但我卡在这一点上,我的大脑似乎被冻结了,所以我寻求你的帮助。
我有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);
}
变量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);
}
现在,这段代码发生的事情是子弹似乎是从同一个方向发射的,只有一颗子弹在后面。
我不是数学专家,如果有人知道答案,我将不胜感激。