2012-01-30 4 views
3

iOSゲームのように土地(丘)を作成する方法Contre Jour? (BOX2DとOpenGLを使用して)iOSゲーム「Contre Jour」のように土地(丘)を作成するには?

私のアイデア:

物理学(BOX2D)

  1. 私たちは体や器具の配列を持っていると思います。

  2. タッチするときは、タッチ位置を決めます。

  3. タッチの場所が土地から遠くない場合、私たちはボディの配列をスキャンし始め、タッチに最も近い座標を持つボディを探しています。

  4. タッチ移動の場合は、右本体を新しい座標(body->SetTransform(...))に移動します。

多くの体を効率的に使用すると思いますか?座標で正しい体を見つけますか?

グラフィックス(OpenGLの)土地(丘)を描画することにより作成された頂点とする三角形の配列があり

? これは本当ですか?

enter image description here

+0

ゲームエンジンでそれを作成する方がはるかに簡単です – SpeedBirdNine

+0

どういう意味ですか? – Sinba

+0

iPhone用のCocos 2Dと同様に、OpenGLを直接使用するのではなく、グラフィックスを使用すると作業が楽になる場合があります。 – SpeedBirdNine

答えて

2

あなたが最良の選択肢のものをチェックし、所定の領域に備品のリストを取得するには、関数b2World :: QueryAABBを使用することができます。 Box2Dのテストベッドは、マウスをつかんで、そのソースコードをチェックできるようにするために、これを行います。参照:http://www.iforce2d.net/b2dtut/world-querying

ボディを移動するには、実際にはオブジェクトが途中で何かと対話する必要がない場合には良い、SetTransformを使用することができます。もう1つのオプションは、SetLinearVelocityをドラッグして1つのタイムステップで本体を移動させるベロシティにすることです。これは、物体が指の位置に即座に移動することがないため、オブジェクトが動いているときに物体に衝突することができる連続ドラッグを望む場合は、より良い方法です。本体が箇条書き本体である場合、ユーザーは他のオブジェクト(静的壁など)を介して物をドラッグすることもできません。指が離されたときにベロシティをゼロに設定することを忘れないでください:)

+0

美しいAABBを通して検索するという決定。はい、SetLinearVelocityで移動するほうが快適でしょう。ありがとうございました。 – Sinba

+0

1)しかし、私たちは治具を動かすと同時に? 2)私たちがたくさんの身体を使っていると、パフォーマンスが低下するでしょうか? – Sinba

+0

1)? 2)私はそれを疑う。あなたがそれについて考えるなら、体はいつも計算されています。眠っている人が多く、あなたが目を覚ました場合にのみ、それはある程度の違いをもたらすかもしれません。 – iforce2d

関連する問題