2Dゲームで非長方形のオブジェクトとの衝突を検出する方法は?


7

長方形のオブジェクトとの衝突の検出は非常に簡単です。シンプルなタイルベースのゲームを書くことができます。ここで、オブジェクトが長方形ではない可能性がある、たとえば山など、タイルベースではないゲームの作成方法を学びたいと思います。

丘と山のあるでこぼこした地形が必要だとしたら、地形の形状をどのように保存しますか?また、このような不均一なオブジェクトの衝突をどのように検出しますか?


:あなたはこの質問&便利その答えを見つけることがgamedev.stackexchange.com/questions/71800/...
非同期

回答:


3

あなたはそれをいくつかの方法で行うことができます:

そのうちの1つは、バウンディングボックスの衝突を使用してラフコリジョンテストを実行することです(これまで行ってきたことと同様)。それが成功した場合は、ピクセル完全検出を使用してファインコリジョンテストを実行します。

もう1つは、境界形状を使用することですが、境界形状を衝突可能にしたい領域、つまりヒットボックスのみを囲み、交差検出を実行します。


2
ピクセル完全検出を使用して細かい衝突テストを実行するにはどうすればよいですか?
クラッカー

0

地形の形状は通常、配列として保存されます。いわゆる「ハイトマップ」:

height[X][Y]

スムージングやフラクタルの詳細を作成できます(通常、配列の次元が小さい場合)。

手で衝突を行わないでください。速度、貫通などの問題が発生する可能性があります...

サイドスクローラー(焦土)にはBox2D凸ポリゴンを使用します。ゲームのようなトップダウンRPGの場合、ODE、Havok、Newton、Bullet ...は、場合によってはネイティブでハイトマップをサポートしているようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.