1

LibGDX を使用して Android 用のゲームを開発しています。ゲーム内のオブジェクトを回転させる必要があります。オブジェクトはボードとチューブです。私が抱えている問題は、これです。チューブピースは、センターピースとエンドピースの3つのピースで構成されています。チューブとボードを伸ばすことができます。それらは引き伸ばされる可能性があるため、エンドピースは引き伸ばされて歪まないように別のグラフィックにする必要があります。これを適切に行う方法を理解するのに本当に苦労しています。位置と回転は Box2D ボディから取得されます。

構築後のオブジェクトは次のようになります。

エンドキャップ付きチューブピース http://weaverhastings.com/tube.png

これは最後のピースです:

チューブのエンドキャップ http://weaverhastings.com/tube_endpiece.png

これは真ん中に入る作品です:

チューブの中間部分 http://weaverhastings.com/tube_middle.png

それを見ると、問題は元のように見えます。オブジェクトが引き伸ばされると、エンド ピースの回転の原点を変更する必要があります。しかし、その原点を正しく計算する方法がわかりません。

これが私が今使っているコードです:

// Right border
batch.draw(border,                     // AtlasRegion for the border
           position.x,                 // The position as reported from box2d body
           position.y,                 
           25 + 150 * scale.x,         //  25 is 2 x the end piece width, 150 is the width of the middle piece, it is multiplied by the scale because it can be stretched.
           height/2,                   // This is just the height of the tube piece
           border.getRegionWidth(),    // the is the width of the border
           height,                     
           0.6f,                       // The scale of the borders is fixed
           0.8f,                                    
           rotation * MathUtils.radiansToDegrees); // the rotation as retrieved from box2d body

// Left border  
batch.draw(border,
           position.x,
           position.y,
           25 - 150 * scale.x,
           height/2,
           border.getRegionWidth(),
           height,
           0.6f,
           0.8f,
           rotation * MathUtils.radiansToDegrees);

ここで回転する管片のビデオを見ることができます: http://youtu.be/RusL4Mnitds

どんな助けでも大歓迎です。ここまで読んでいただきありがとうございます。

4

1 に答える 1

3

Libgdx では、回転の原点はオブジェクトの位置 (たとえば、描画するように指示した場所) を基準にしています。

したがって、左の境界線の場合、originX は中央の部分の幅の半分などであると言う必要があり(middlePiece.width/2)、右の部分の場合、originX は負の値である必要があります(-middlePiece.width/2)。もちろん、それらの位置は、回転していないときは中央のピースの端にある必要があります。それぞれの OriginY は、センター ピースの半分の高さになります。(middlePiece.height/2)

お役に立てれば

于 2012-11-05T19:16:55.300 に答える