1

cocos2dとbox2dを使ってiPadゲームを作っています。

他の要素の中には、動きの速いプレーヤー オブジェクトと一連の静的線オブジェクトがあります。プレーヤーが線を横切ったときに線を検出する必要がありますが、プレーヤー オブジェクトやゲーム内の他の移動オブジェクトに対する壁のようには機能しないようにします。それで、ラインをセンサーに設定しました。

ただし、Box2D が高速移動オブジェクトの衝突検出のために持っている気の利いたアンチトンネリング コードは、センサーとして設定されたボディには適用されないようです。これで、私のプレーヤー オブジェクトはラインを通過し、おそらく 5 回に 1 回しか検出されません。

スプライトがどんなに速く進んでいても、スプライトがラインを横切るたびに検出するようにするにはどうすればよいですか?

編集:誰かが同様の問題を抱えていて、可能な解決策を見つけたbox2Dフォーラムでこの投稿を見つけました。ただし、ソリューションの実装方法には従いません。他の人の助けになるかもしれませんし、誰かがこの人が何をしたかをもっと明確に説明できるかもしれません。彼らが言ったことは次のとおりです。

4

1 に答える 1

2

OK、私はそれを働かせました。誰かが Box2D フォーラムで、組み込みの衝突検出に頼る代わりにレイ キャストを使用するという解決策で応答しました。RayWenderlich.com のこの優れたチュートリアルで、これを行う方法の説明を見つけることができました。

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

于 2012-04-16T23:46:58.163 に答える