World Bounds-(0、Size)または(-HalfSize、HalfSize)?


9

オブジェクトを移動、描画、衝突させるゲームスペースを作成するときは、(0,0)ポイントまたは(0,0,0)ポイントをスペースの真ん中に置いて、ワールドの境界は(-halfSize、halfSize)ですか、それともスペースの端にある方が良いので、境界は(0、サイズ)ですか?

それぞれの長所と短所は何ですか?それぞれにどのような問題がありますか?それとも本当に重要ではないのですか?

細かいことのようですが、見落としている可能性のある大きな問題があるかどうかを確認したいと思いました。

回答:


15

スペースの中心を(0、0、0)にした方が良いようです。空間内の位置を表すために符号付きフォーマットを使用していると仮定すると、(0、0、0)の中心により、フォーマットの負と正の両方の部分を使用でき、浮動小数点数の精度と符号付き整数の範囲に驚異をもたらすことができます。 。これは小規模では問題にならないかもしれませんが、大規模な場合、つまり、新しいシステムを完全に考案する必要がある前に、すべての違いを生む可能性があります。

明確にするために:あなたがレンダリングしていると私が想定しているゲームの世界を作成しているとすると、変換する最終的な形式は浮動小数点になります。その場合、(0、Size)は表現できないのに対し、(-HalfSize、HalfSize)は表現できる状況になる可能性があります。レンダリングする予定がなく、任意のフォーマットを選択できる場合は、どちらのスタイルも使用できますが、私は個人的には前述のスタイルを優先します。


+1、多くの物理シミュレーションがこの範囲も使用しているため、この理由が考えられます。
MichaelHouse


1
また、かなりよく知られているが、おそらく初心者のために少し難しい:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - 「何すべてのコンピュータ科学者することがわかっているが浮動小数点演算について」
リアンダー

5

特に問題ではありません。ゲーム全体で一貫している限り。

より一般的なアプローチは、世界の境界を中心(0,0)とすることです。つまり、境界をそこから移動させること-halfSize, halfSizeです。位置(Vector2またはVector3)を表すほとんどのデータ構造はデフォルトでゼロになっているので、オブジェクトのデフォルトの配置は(下端ではなく)中心にあることがわかります。

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