0

私は、プレイヤーが中心点から時計/反時計回りに円を描く宇宙船を操作しながら、その点から発射物を発射するゲームに取り組んでいます。実際の配置が少しずれていて、回転が機能していませんが、すべてを書き込んでいます。

動きについては、私は持っています:

if (code==KeyEvent.VK_LEFT) {
            trans.setToIdentity();
            trans.translate(player.x-10, player.y-10);
            player.moveLeft();
                            //trans.rotate(?)
            System.out.println(player.x + " " + 
                               player.y + " " + player.dX + " " + player.dY);
}

AffineTransformtransplayer.moveLeft()、プレーヤーの座標を円上の点に変更します(期待どおりに機能し、sin / cos / theta、単純なトリガーを使用します)。それを使用してオブジェクトを描画するとGraphics2D、座標に従いますが、インポートした画像を使用すると、数ピクセル(〜25)ピクセル移動します。角度、x、y、および半径があるのでAffineTransform、画像をその中心点を中心に回転させ、常に中心点に向けさせるために何を使用できますか?

4

1 に答える 1

0
        if (code==KeyEvent.VK_LEFT) {
            trans.setToIdentity();
            player.moveLeft();
            trans.translate(player.x-shipImg.getWidth()/2,player.y-shipImg.getHeight()/2);
            trans.rotate(player.angle-1.57, shipImg.getWidth()/2, shipImg.getHeight()/2);
        }

理解した。最初に船の中心点をプレーヤーのx、y座標に移動し、次に中心点を中心に回転します(わずかな角度で微調整します)。

于 2012-10-04T19:42:25.617 に答える