1

プレーヤーの画像があります (トップダウン 2D)。プレイヤーは回転してカメラの方を向き、銃を構えます。弾丸が作成されると、プレーヤーの x と y に作成されます。これは、プレイヤーが正しい方向を向いている場合に機能しますが、プレイヤーが回転して発砲すると、弾丸は正しい方向に進みますが、銃からは発射されません。どうすればこれを修正できますか?

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    Bullet b = new Bullet(x, y, angle);
    Utils.world.addBullet(b);
}
4

1 に答える 1

3

銃のオフセットを決定し (ペイントで画像を開くか、試行錯誤)、そのオフセットを回転させて弾丸の初期位置を取得する必要があります。

次のようなものが動作するはずです: 注 - 私はこれをテストしていないため、タイプミスがある可能性があります

public void fire() {
    angle = sprite.getRotation();
    System.out.println(angle);
    x = sprite.getX();
    y = sprite.getY();

    double bulletX = x + (gunOffsetX * Math.cos(angle) - gunOffsetY * Math.sin(angle));
    double bulletY = y + (gunOffsetX * Math.sin(angle) + gunOffsetY * Math.cos(angle));

    Bullet b = new Bullet(bulletX , bulletY , angle);
    Utils.world.addBullet(b);
}

出典: http://en.wikipedia.org/wiki/Rotation_(数学)

于 2012-07-28T01:14:13.160 に答える