質問

私のプレーヤーのイメージ(トップダウン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);
}
.

役に立ちましたか?

解決

銃のオフセットを決定する必要があります(塗料で画像を開く、または試用&エラー)、次にそのオフセットを回転させて箇条書きの初期位置を取得します。

次のようなものがうまくいくはずです。注 - これをテストしなかったため、Typos

がある場合があります。
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_(mathematics)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top