船が回転してあらゆる方向に発射できるスペース シューティング ゲームを作ろうとしています。今、三角法の基本は知っていますが、この時点で立ち往生していて、脳が凍っているように見えるので、助けを求めます。
私は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);
}
variable 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);
}
さて、このコードで起こっていることは、弾丸が同じ方向から発射されたように見えるということです。弾丸は 1 つしか後ろにありません。
私は数学の専門家ではありません。誰かが答えを知っていれば、本当に感謝しています。