3

そのため、2 つのジェットパックを使用してキャラクターを作成しようとしています。どちらも互いに独立して発射して、重心からオフセットされたインパルスを作成できます (Cocos2d、Chipmunk、および SpaceManager を使用)。

私の問題は、デフォルトでは、インパルス関数はオブジェクトの現在の回転(つまり、どちらの方向を向いているか)を考慮しないことです。そのため、使用するインパルスオフセットと方向は、どの方向でも同じになります。文字が指しています。

より現実的なモデルを作成しようとしています - インパルスはオブジェクトの既存の回転に基づいています。キャラクターが指している現在の方向を保持するベクトル変数をプログラムで維持してそれを使用できると確信していますが、もっと簡単な答えが必要です。

人々がワールド空間とボディの相対座標について書いているのを聞いたことがあります。インパルスはデフォルトでワールド空間であり、ボディの相対座標は私の問題を解決します。これは本当ですか?もしそうなら、これら 2 つの座標系をどのように変換しますか?

あなたが私に与えることができるどんな助けでも大歓迎です.

4

1 に答える 1

1

キャラクタの現在の向き (反時計回りに回転した角度) が に格納されていてtheta、インパルス ベクトルがixおよびiyにある場合、ワールド空間ベクトルは次のようになります。

ix_world = ix * cos(theta) - iy * sin(theta);
iy_world = ix * sin(theta) + iy * cos(theta);

とが正しく機能するには、角度thetaがラジアンである必要があります。度からラジアンに変換する必要がある場合は、角度に を掛けます。cossinPI / 180.0

この式の由来を知りたい場合は、こちらをお読みください

于 2011-03-24T21:12:05.693 に答える