2011-09-14 8 views
2

はXNAで始まったばかりで、この例は大いに役立ちます!ボールがバウンディングボックスに当たる場所を検出していますか? XNA

私はボールが地形に当たると、いくつかの地形とボールが得られる簡単なテストを行った。これは、ボールの位置を衝突時に地形の上に設定することで行います。

私の質問では、これにバウンディングボックスを使用していますが、ボールが上にレスポンスするので、ボールが左右から地形に当てはまると、うまく見えません。どのように私はそれが横にヒットのチェックですか?

今のコードのショートグリッチ:playerOneがボールである

if (playerOne.BoundingBox.Intersects(terrain.BoundingBox) 

    playerOne.Position.Y = terrain.BoundingBox.Top; 

ありがとうございます!

+0

ちょうどあなたに知らせてください:ゲームのためのスタック交換があります:http://gamedev.stackexchange.com/ – v42

答えて

1

XNA BoundingBoxは、どの側面が衝突したかを判断するのに役立ちます。一部の人は、バウンディングボックスを6つのボックスに分割しています(部屋の周りの壁のように、現在のボックスの各面に1つずつ)。しかし、重複している可能性があるコーナーの近くでは、最初にヒットします。

究極のソリューションは、現在のバウンディングボックスの各面にプレーンを作成し、境界ボックスが衝突を検出した場合は、各プレーンとの衝突をチェックします。あなたが衝突した場合、それは1つ、2つ、または3つの飛行機に対して同時に起こることがあります。それが1より大きい場合は、関連する飛行機ごとにdetermine point/plane contact positionsにする必要があります。&のいずれかがボールの前の位置に近い方。最初に打つ側です。

+0

先端、偉大なexplenationのおかげで:) –

+0

ちょっとスティーブはいくつかのコードを持っている可能性はありますか?ありがとう! – Martin

1

このチュートリアルは、バットを別の領域に分割し、数学ヘルパーとラジアンを使用して衝突リバウンドのさまざまな条件を設定することで、正確な結果をカバーすることを強くお勧めします。

http://ross-warren.co.uk/pong-clone-in-xna-4-0-for-windows/6/ 

これは問題ありませんが、その原則に適応できるはずです。

+0

ありがとう!本当に私を助けた –

関連する問題