1

デモプログラムは一度画面をスライドさせます。それに合わせて胴体(私の場合は青い大砲)が回転します。そこでキャノン本体とグラウンド本体に回転ジョイントを定義したのですが、アンカーが正しく設定されていないようで、マウスジョイントで本体を回転させることができません。「国際慣行」,次に関連するコーディング/画面をアップロードします。あなたが私を助けることができるかどうか見てください。

図 1: 関連するボディ、回転ジョイントの定義

図 2: タッチ コールバック関数: マウス ジョイントの作成

写真3:シミュレーター画面(シミュレーターから見ると、回転のアンカーポイントが間違っているようです)

「評判」がないため、ここに画像をアップロードしたり、画像リンクを投稿したりできません。自分のコメントに画像リンクを追加しました。

4

1 に答える 1

3

まず、回転ジョイントを作成するときは、次のように初期化を使用する必要があります。

cannonJointDef.Initialize(groundBody, cannonBody, cannonBody->GetPosition());

最後の引数は、世界座標のアンカーポイントです。この場合、それは大砲の中心になります。

次に、回転を直接設定するだけで、mouseJointなしで大砲を回転させてみてください。

CGPoint touchVec = ccpSub(touchPos, _cannon.position);
float angle = ccpToAngle(touchVec) - M_PI_2;
cannonBody->SetTransform(cannonBody->GetPosition(), angle);
于 2012-11-27T12:52:15.670 に答える