私は、Cocos2D-X と Box2D を使用して、リトル モバイル ゲームに取り組んでいます。
引っかかったポイントは、box2d-body(主役)とそれに合わせたスプライトの動きです。今私はしたい:
- この Body を x 軸に沿って一定の速度で動かします。上向きまたは下向きに転がっていても (円形です)
- 体が転がっている地面にほぼくっつくように保つ
- ボディと対応するスプライトを画面の中央に保持します。
私が試したこと:
update()-メソッドで
body->SetLinearVelocity(b2Vec2(x,y))
、ボディが速度に一定の値を渡していた場合、より高い/より低い値に使用しました以前は非常に高い y 値を設定していました
body->SetLinearVelocity(b2Vec2(x,y))
最初に、x 軸に沿ってスクロールするだけでよいため、y 軸に沿ってスクロールしていた playerSprite で CCFollow を使用しようとしました。そのため、アンビエンス (プラットフォームなど) を含むレイヤー全体を画面の左側に、Player Body と Player スプライトを画面の右側に配置し、速度の値を調整して、プレーヤーが画面の中央にくるようにします。
良い...
body->applyLinearImpulse(...)
...速度を手動で設定するたびに(ボディが上に移動するときに使用しようとしましたが、の値でvelocityIterationsをいじってみました)、私が望んでいたように機能しませんでしたworld->Step(...)
)小さな遅延があります。プレーヤーの体を画面の中心から多かれ少なかれ押し出します。...また、期待どおりに機能しませんでした.x値を調整する必要があったため、ボディが上向きに動いて減速しないようにする必要があったため、ボディが地面にくっつきにくくなりました.. ..
... CCFollow は良い仕事をしましたが、y 軸に沿ってスクロールしたくなかったことと、過剰なスプライトを画面の中央から強制的に開始することを除いては。レイヤー全体を移動しても良い結果は得られませんでした。レイヤーの移動速度とボディの値を調整して、プレーヤーが画面のほぼ中央に留まるように、レイヤーとボディの値を互いに打ち消し合うように長い間試みました... .
だから私の質問は:
このまとまりのある問題の束を解決するための新しいアプローチを持っている人はいますか?
乾杯、
セブ