如何在openGL中将2D屏幕坐标转换为2D地图坐标



我正在制作一款使用2D地图(由贴图组成)的小游戏。我现在想要找出用户正在选择的tile。由于地图可以移动和缩放(glTranslate(), glScale()等),我不完全确定直接转换是否可行。那么,如何从屏幕上的鼠标坐标获取"地图"坐标呢?

如果地图是在屏幕上以2D形式绘制的,没有透视图,那么它应该只是一些基本的数学来确定哪个贴图被选中,基于贴图的宽度和平移。

例如你可以这样做:

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

然而,这是特定于你的引擎。


如果它是用透视绘制的,那么您可以使用gluUnProject从窗口坐标中获取对象坐标(或者您可以用自己的函数模拟这个函数)。

最新更新