カラーベースの衝突検出システムを使用して後悔しますか?


7

XNAで最初のゲームの構築を始めたばかりです(C#の経験はありますが、ゲームの経験はありません)。

私はかなりシンプルなトップダウン2Dシューティングゲームを構築しています。カラーベースの衝突システムの使用に関するこのチュートリアルを読みましたが、本当にクールに聞こえました。http://www.xnadevelopment.com/tutorials/theroadnottaken/theroadnottaken.shtml

これは、グラフィックスプログラムを使用するだけですばやくレベルを作成でき、衝突ボックスなどの観点から自分の風景(壁、木など)を定義する必要がないことを意味します。

ただし、このパスをたどると、基本的なジオメトリの交差タイプの計算を実行できないため、弾丸などの高速で移動するオブジェクトが壁などと交差するかどうかを判断する計算が潜在的に難しくなることがわかります。

そうですか?時間の経過とともにゲームが複雑になった場合、この方向に進んで後悔するでしょうか?ジオメトリの観点から自分の風景を定義するためのレベルエディタの作成に投資するだけの価値はありますか?

noobへのアドバイスは大歓迎です!

回答:


6

ビットマップベースの衝突アプローチの機能に関する観察結果を確認しました。

この方法は、ビットマップを出力できる任意のプログラム(任意の画像編集プログラム)でレベルを編集する本当に簡単な方法を提供します。このシステムは、さまざまなタイプの地面を定義する場合にも非常に柔軟です。green泥のために、そしてredしっかりした地下のために言ってください。次に、現在のピクセルを簡単に照会し、プレーヤーが立っている地下のタイプを判別します。傾斜路(地面タイプAからBへの勾配)でさえ、ほとんど問題なく可能です。

衝突検出で問題が発生します。別のオブジェクトとの交差を検出するのは簡単です(ピクセルテストを行うだけです)が、衝突したオブジェクトの向きを見つけるのは困難(計算コストがかかります)です。これは、オブジェクトを正しく偏向させるためにサーフェス法線が必要な場合に特に重要です。

また、特に高速で移動するオブジェクトも問題になる可能性があります。特に、衝突する薄いオブジェクト(幅が1ピクセルなど)がある場合はそうです。このトピックをすでにカバーしているこの質問があります。

結局、それはすべて、作成したいゲームの種類と、必要な解像度(衝突検出/解決の観点から)に依存します。ビットマップベースのアプローチは、世界の大部分が静的である場合に最適に機能します。ただし、破壊可能レベルなどを簡単に実装することもできます。

作成するゲームの種類については言及しなかったので、ビットマップベースの衝突アプローチがゲームにとって有益かどうかを判断するのは、あなた次第です。幸運を。


私の経験では、ピクセルパーフェクトな衝突検出システムでは、衝突後の角度インパルスを実際に決定するのに比べて、表面の法線の問題はかなり簡単です。一般に、PPCDは、このような詳細レベルを必要とするゲームには使用されません。これは、おそらくこれが原因で、ベクトルベースの物理学よりもはるかに困難になるためです。このアプローチで経験したもう1つの問題は、レベル内の特定の位置でキャラクターを回転させたときに「スタック」する可能性でした。Box2Dなどでは、重心が近すぎる場合に重心を離してこれを処理します。
エンジニア

どうもありがとう!私は偏向を行うつもりはないので、大丈夫だと思います。1つのフレームで壁を飛び越える可能性のある弾丸が速く移動する場合、どうすればよいかわかりませんでした。それらが壁を横切ったかどうかを判断するのは問題ないように思えます。箇条書きのパスである細長い長方形のマップ画像のサンプルを取り、壁の色のピクセルを探します。しかし、最初の壁のピクセルが当たると考えれば、少し難しいように思えます。弾丸が最初に発射されたときにレイキャストして、レイに沿って短い間隔でいくつかのサンプルピクセルを取得し、最初の壁のピクセルを探して、それを影響点としてマークすると思いますか?
TerryB 2011

2
@TerryB:Bresenhamのラインアルゴリズムは、ここでは問題なく機能すると思います。壁のピクセルにぶつかるまで線を引き、それが衝突のポイントになります。
bummzack 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.