Math 如果我知道一个等距菱形贴图坐标,我如何确定单击了哪个磁贴?
我的瓦片引擎来了。它可以绘制正方形、六角形和等轴测交错视点。我正在努力使用等距旋转(或菱形)视点。下面是一张10x10菱形地图的图片和用于绘制它的(简化)代码。瓷砖为128x64 我知道这将绘制整个Tiles()的内容,而不仅仅是屏幕上可见的内容,但我正在尝试首先获取基本信息 我搞不懂的是如何将地图上的x、y坐标转换为平铺列、行坐标。我试图扭转:Math 如果我知道一个等距菱形贴图坐标,我如何确定单击了哪个磁贴?,math,drawing,tiles,isometric,Math,Drawing,Tiles,Isometric,我的瓦片引擎来了。它可以绘制正方形、六角形和等轴测交错视点。我正在努力使用等距旋转(或菱形)视点。下面是一张10x10菱形地图的图片和用于绘制它的(简化)代码。瓷砖为128x64 我知道这将绘制整个Tiles()的内容,而不仅仅是屏幕上可见的内容,但我正在尝试首先获取基本信息 我搞不懂的是如何将地图上的x、y坐标转换为平铺列、行坐标。我试图扭转: x = column * (TileWidth/2) + (row * (TileWidth/2)) + Origin.X y = (column
x = column * (TileWidth/2) + (row * (TileWidth/2)) + Origin.X
y = (column * (TileHeight/2)) - (row * (TileHeight/2)) + Origin.Y
要计算给定x和y的列和行,并得出以下结果:
column = ((x/2) - (Origin.X/2) + y + Origin.Y) / TileHeight
row = ((x/2) - (Origin.X/2) - y - Origin.Y) / TileHeight
但这似乎不起作用。有人能想出更好的方法吗?有没有更好的方法将矩形网格转换为菱形,然后再转换回来(因为我对矩阵知之甚少……)
谢谢,我不确定我是否能理解您问题的细节,但是如果您只是想解决
x
和y
的列和行的公式,那么
column=(x + y - (Origin.X + Origin.Y))/TileWidth
row = (x - y - (Origin.X - Origin.Y))/TileHeight
获取这些表达式的最简单方法是,首先将x
和y
的表达式相加,然后对列
进行求解,然后减去它们并对行
进行求解
column=(x + y - (Origin.X + Origin.Y))/TileWidth
row = (x - y - (Origin.X - Origin.Y))/TileHeight