2016-05-14 4 views
0

を回転させながら、私はここで弾丸を起動したい:
(赤い線がある) example
私は位置を計算 として:(弾丸位置決め<br> だから問題は弾丸<br> の位置を計算している(実際のための数学で、ありません)私はlibgdxのAndroidアプリ(トップダウンシューター)を作成し、弾丸の位置に問題があるよ

bullet.setPosition(world.getPlayer()のgetX()+ world.getPlayer。 ).getWidth()*(float)Math.cos(Math.toRadians(world.getPlayer()。getRotatio (world.getPlayer()。getRotation()))))、getHeight())(float)Math.sin(Math.toRadians(world.getPlayer()))、 ;

と回転= 0ながら、それがうまく動作しますが、できるだけ早く私は私のプレーヤーを回転を始めると、それがうまくいかない:(

答えて

0

私はあなたのプレイヤオブジェクトがlibGDX Spriteであると仮定しています。そのため、getXをそしてgetYは、スプライトの左下隅の座標であるとgetRotationは(プレイヤーの中央にあると仮定)の起源についてのスプライトの回転である。

あなたが変換することができますいくつかの基本的な三角法を行うことにより、あなたが試みたように、角度と(x、y)座標への変位。bulプレイヤーの中心を中心に回転させる必要があります。これは次のコードで行うことができます:

Sprite player = world.getPlayer(); //Just to tidy up the code 

//Half width, half height and rotation 
float hw = player.getWidth()/2.0f; 
float hh = player.getHeight()/2.0f; 
float rot = Math.toRadians(player.getRotation()); 

bullet.setPosition(player.getX() + hw + hw * (float) Math.cos(rot), 
        player.getY() + hh + hh * (float) Math.sin(rot)); 
関連する問題