2012-04-12 24 views
1

私はcocos2dとbox2dを使ってipadゲームを作っています。Box2Dのセンサオブジェクトのトンネリングを防ぐ方法

他の要素の中には、速く動くプレーヤーオブジェクトと静的な線オブジェクトがたくさんあります。私は、ラインがプレーヤーを横切ったときにそれを検出するが、ゲーム内のプレーヤーオブジェクトまたは他の動くオブジェクトに対する壁のように行動しないようにしたい。だから私はセンサーになるように設定している。

しかし、Box2Dが速く動くオブジェクトの衝突の検出に役立つ素晴らしいトンネリング防止コードは、センサとして設定されたボディには適用されないようです。だから私の選手オブジェクトは、ラインを右に通過し、おそらく5回に1回しか検出されません。

どのように速くても、毎回ラインを越えるスプライトを検出するためにbox2dを取得するにはどうすればよいですか?

編集:この記事は、誰かが同様の問題を抱えていたというbox2Dフォーラムで見つかりました。しかし、私はソリューションの実装方法に従わない。たぶんそれは誰か他の人を助けるか、あるいは誰かがこの人がもっとはっきりとしたことを説明するかもしれない。彼らが言ったことは次のとおりです。

+0

Genpfault、なぜあなたは「ありがとう」を削除しましたか?それはここでは不適切だと思われますか?私はstackoverflowに新しいです、ごめんなさい。 –

+1

ちょっとしたメモ、James。ここで回答が見つからない場合は、Box2Dフォーラムに質問を投稿することをおすすめします。開発者は通常そこでかなり活発です。 – user987280

+0

ありがとうございます:-) –

答えて

2

[OK] Box2Dのフォーラムでは、誰かが組み込みの衝突検出に頼るのではなく、レイキャストを使用するという解決策で答えました。私はこれを行う方法に関する指示を見つけることができましたin this excellent tutorial on RayWenderlich.com

私の目的のために、私は単純に最後のフレームからスプライトの速度を計算し、レイ・キャストを実行してラインを越えたかどうかを確認しました。コールバックは、x、y座標が交差する場所を示します。

関連する問題