OpenGLで2Dスクリーン座標を2Dマップ座標に変換するにはどうすればよいですか?

私は、2Dマップ(タイルから作られた)を使用する小さなゲームに取り組んでいます。私は今、どのタイルがユーザによって選択されているかを知りたいと思うでしょう。マップが移動(glTranslate()、glScale()など)することができるので、直接変換が可能であるかどうかは完全にはわかりません。
どうすれば私の画面上のマウス座標から「マップ」座標を得ることができますか?

ベストアンサー

パースペクティブを使用してマップ上に2Dで描画されている場合は、タイルの幅と平行移動に基づいて、選択されているタイルを決定する基本的な計算が必要です。

たとえば、次のようなことができます。

int selectedTileX = (translatedX + mouseX)/tileWidth;
int selectedTileY = (translatedY + mouseY)/tileHeight;

しかし、これはあなたのエンジンに特有です。


gluUnProject
を使用して、オブジェクト座標をウィンドウ座標から取得します(または、この関数を自分で模倣することもできます)。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です