3

私は苦しみが好きなので、Java で 2D アイソメトリック エンジンを作ることに取り組んでいます。とにかく、私は衝突検出に入っていて、ちょっとした問題にぶつかりました。

ゲーム内のキャラクターは、タイルからタイルへの移動に制限されず、自由に移動します。私の問題は、タイルへのアクセスを拒否せずに、プレーヤーがクレートなどと衝突するのを防ぐ方法がわからないことです。

たとえば、クレートがタイルの 0.5 にあり、残りのクレートがタイルから外れていたとします。プレーヤーが、タイル全体ではなく、タイルの空きの 0.5 に移動できるようにしたいと思います。タイルがブロックされます。

私が遭遇した問題は、オブジェクトのフットプリントのサイズを概算する方法がわからないことです。ゲーム空間でのオブジェクトの「高さ」は、画像が占有する追加の床面積に変換されるため、画像の寸法を使用してもうまく機能しません。

オブジェクトのサイズはどのように推定すればよいですか? ピクセルパーフェクトな検出は必要ありません。ひし形は問題なく機能します。

必要なコードがあれば喜んで提供しますが、これは数学の問題のようです。

4

1 に答える 1

0

スプライトの境界長方形から、内側に収まる菱形の高さを推測できますが、各寸法がスプライトの幅と高さに等しく寄与するため、床の2つの寸法を正確に決定することはできません。ただし、ひし形の正方形の底辺を想定すると、その辺の長さも決定できます。

スプライトのW幅がHピクセルで高さがピクセルの場合、ひし形の正方形の底面には側面がW / sqrt(3)あり、ひし形の高さはになりますH - (W / sqrt(3))等角投影におけるいくつかの形状のこの画像は、これらの式が機能する理由を理解するのに役立ちます。

于 2013-02-08T19:49:11.330 に答える