2012-01-31 3 views
0

私たちはいつもcocos2dでこの関数を使用していますので、いつでも私のスプライトを拡大できます。box2dでも同じことができますか?たとえば、円の形をしたボディを作成して、それを大きくしたい。スプライトが行うように、box2dのシェイプをスケールすることはできますか?

円を作成した後にm_radiusを再割り当てしようとしましたが、動作しませんでした。

+0

http://www.box2d.org/forum/viewtopic.php?f=8&t=5601&p=26070#p26070これをチェックアウトすると、半径を変更することで1人の人ができることがわかります...これがあなたを助けてくれることを願っています – Haroon

答えて

3

単純にshape.m_radiusを新しい値に割り当てると、機能しません。このことができます

fixture->GetShape()->m_radius = new_radius/PTM_RATIO; 

希望:

は、あなたは、あなたのオブジェクトに対して作成b2Fixtureに関連付けられた形状オブジェクトを参照する必要があります。

+1

質量の特性を新しいサイズに合わせるには、本体のResetMassDataも必要です。より確実で将来的な方法は、フィクスチャを破棄して再作成することです(ただし、ゲームロジックが関連付けられている場合は問題ありません)。 – iforce2d

+0

ありがとうございました、それは問題です。私はcircle.m_radius = radius/PTM_RATIOと入力すると、決して使用しないオブジェクトの変数を割り当てます。フィクスチャから形状を取得してから再割り当てする必要がありますそれはあなたが提案したとおりです。 – ManuQiao

+0

あなたは歓迎です:) –

関連する問題