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
どんな助けでも大歓迎です。ここまで読んでいただきありがとうございます。