2011-11-13 12 views
-1

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

答えて

1

マップがの視点なしでの画面上に2Dで描画されている場合は、タイルの幅と平行移動に基づいて選択されたタイルを決定する基本的な計算が必要です。しかし、これはあなたのエンジンに固有の

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

たとえば、あなたのような何かを行うことができます。それは視点でを描かれている場合は


、あなたは、オブジェクトがウィンドウ座標のうち、座標(またはあなた自身でこの機能を模倣することができ)を取得するためにgluUnProjectを使用することができます。

+0

完全に平坦な面に描画していますが、マップを拡大/縮小するように縮尺します。しかし、多かれ少なかれ直接的な変換であれば、算術演算を使って最終的な位置を計算することが可能でなければなりません。助けてくれてありがとう :) – Bartvbl

関連する問題