4

私は自分のゲームに重力を取り入れたいと思っています。Box2D を使用すると誰もが言うことは知っていますが、私の場合は使用できません。重力には Cocos2D を使用する必要があります

Cocos2D には重力 API が組み込まれていないことがわかっているため、手動で何かを行う必要があります。問題は、これを示すチュートリアルや例がウェブ上のどこにもないということです。

誰かが何をしたかを見せてもらえますか、または一定でない重力(落下中にわずかに強くなるもの)を適用する方法を段階的に説明できますか.

私と同じように悩んでいる方の参考になればと思います!

ありがとう!

4

1 に答える 1

12

重力は、物理ステップごとに体に適用される一定の速度に他なりません。次の更新方法の例を見てください。

-(void) update:(ccTime)delta
{
   // use a gravity velocity that "feels good" for your app
   const CGPoint gravity = CGPointMake(0, -0.2);

   // update sprite position after applying downward gravity velocity
   CGPoint pos = sprite.position;
   pos.y += gravity.y;
   sprite.position = pos;
}

フレームごとにスプライトの y 位置が減少します。それが簡単なアプローチです。よりリアルな効果を得るには、移動するオブジェクトごとに速度ベクトルを設定し、速度に重力を適用します (これは CGPoint でもあります)。

-(void) update:(ccTime)delta
{
   // use a gravity velocity that "feels good" for your app
   const CGPoint gravity = CGPointMake(0, -0.2);

   // update velocity with gravitational influence
   velocity.y += gravity.y;

   // update sprite position with velocity
   CGPoint pos = sprite.position;
   pos.y += velocity.y;
   sprite.position = pos;
}

これは、時間の経過とともに速度が下向きの y 方向に増加するという効果があります。これにより、オブジェクトが「落下」している時間が長くなるほど、下方向への加速が速くなります。

ただし、速度を変更することで、オブジェクトの全体的な方向を変更できます。たとえば、キャラクターをジャンプさせるにはvelocity.y = 2.0、時間の経過とともに適用される重力の影響により、上に移動して再び下に戻るように設定できます。

これはまだ単純化されたアプローチですが、「実際の」物理エンジンを使用しないゲームでは非常に一般的です。

于 2011-11-15T14:01:49.927 に答える