4
2Dスクリーン座標とデカルト座標の違いに対処する方法
ほとんどの2D画面/ビットマップ座標系には、下向きの正のY軸があります(原点は左上隅にあります)。 これは、正のY軸を上に向けて(原点を中心に)ほとんどの人が幾何学的に考える方法とは逆です。 ほとんどのゲームは、2つの異なる2D座標系をどのように管理しますか?座標には主に2つのタイプ(画面とデカルト)がありますが、スプライト空間、ワールド空間、ビュー空間、画面空間など、さまざまな座標空間があります。 バックグラウンド: 私はもともと、ゲーム内の世界座標を2Dスクリーン座標規則に一致させました。これにより、グラフィックス描画ルーチンを使用することは非常に自然になりましたが、atan2()などの三角関数を使用すると微妙な問題が発生しました。atan2()が正のy軸が上を向いていると想定するため、atan2()2Dスクリーン座標の供給結果は非常に紛らわしいです。 そこで、世界座標を古典的なデカルト座標系(画面の左下に原点がある)に変更しました。atan2()を使用した推論ははるかに簡単ですが、現在では他の種類の推論を行うことが難しくなっています。 ここで画面をクリックすると、その下にあるスプライトは何ですか? そのスプライトはどこでクリックしましたか? スプライトが間違った位置に描画された場合、間違って計算されたものは何ですか?画面座標または世界座標? 画面からデカルト座標への変換では、両方の(x、y)値のオプションの変換を使用して、y値を-1でスケーリングするだけです。ゲームデザインのベストプラクティスにもっと興味があります。 ほとんどのゲームは、単に画面座標の規則に固執し、atan2()のようなものがどのように機能するかについての考え方を変えますか? 座標系の変換はいつ/どのように行われますか?(マトリックス、OOP抽象化などを使用) スプライトの位置は、スプライトの中心または角の1つとして保存されていますか?「間違った」方向に進むスプライトの高さ/幅は、描画するときによくある問題のようです。 私の質問は主に2Dゲームに関するものですが、OpenGLはY軸が上を向く座標系を使用しているようです。OpenGLは、最終的にこれらの3D座標を2Dスクリーン座標系に投影する必要があります。おそらくいくつかのガイダンスはOpenGLの方法で見つけることができます...
23
2d
screen
coordinates