Lua 将坐标转换到不同的坐标系?

Lua 将坐标转换到不同的坐标系?,lua,2d,coordinates,converter,Lua,2d,Coordinates,Converter,嘿,伙计们,我正在制作一个图形用户界面,我的图形用户界面上的图像使用计算机的坐标系,看起来像 我试着把坐标转换成正常的坐标系,比如 疯了我想不出来。我现在正在使用LUA。但当我点击图像时,我得到了第一个坐标系的坐标,但随后需要转换为第二个坐标系,以便在游戏中使用 我的gui是什么样子的 例如,当我选择我的Gui时,我得到x=492和y=247,对于我的游戏内坐标,它们应该是0,0。我只是需要一种方法来转换它们。一个像素在游戏中是500米,所以0,1在游戏中是500米 假设您的世界地图没有延伸到

嘿,伙计们,我正在制作一个图形用户界面,我的图形用户界面上的图像使用计算机的坐标系,看起来像

我试着把坐标转换成正常的坐标系,比如

疯了我想不出来。我现在正在使用LUA。但当我点击图像时,我得到了第一个坐标系的坐标,但随后需要转换为第二个坐标系,以便在游戏中使用

我的gui是什么样子的


例如,当我选择我的Gui时,我得到x=492和y=247,对于我的游戏内坐标,它们应该是0,0。我只是需要一种方法来转换它们。一个像素在游戏中是500米,所以0,1在游戏中是500米

假设您的世界地图没有延伸到视图端口之外,那么下面的选项应该可以工作

function convertToWorldPoint(x,y)
  x = ( (x-horizontalOffset) - (worldWidth/2) ) * scale
  y = ( (y-verticalOffset) - (worldHeight/2) ) * scale
  return x,y
end
其中,水平和垂直偏移是视图端口与屏幕左侧和顶部之间的距离,世界宽度和高度是世界的大小。因此,你的世界可能会有这样一个例子:

function convertToWorldPoint(x,y)
  x = ( (x+8) - (1000/2) ) * 500
  y = ( (y+3) - (500/2) ) * 500
  return x,y
end
print(convertToWorldPoint(492,247)) -- Returns 0,0

当然,您可能需要根据是否可以放大您的世界或是否可以在您的世界中平移来更改函数,但由于您没有提供任何这些详细信息供我们使用,我假定这就是您所需要的。

Show code,GUI屏幕截图-任何更具体的帮助。更新后的帖子将很快添加缩放功能只是没有。另一件需要注意的事情是,我在游戏中每隔500米扫描一次地形,所以当我移动一个像素或0,1时,这将是500米,那么你知道我将如何将其添加到函数中吗?当然,只需将x和y乘以地图的任何比例(在本例中为500)。我将编辑我的答案以反映变化。我有两个简短的问题。1.那么如何得到水平和垂直偏移量2。游戏世界的高度和宽度是游戏世界的高度和宽度还是我的GUI世界?感谢您的时间,我真的很感激。偏移量是视图端口(窗口上的地图)与屏幕左侧和顶部之间的空间大小。例如,如果您在窗口上的位置10,30绘制地图,那么10,30将分别是您的x和y偏移。高度和宽度将是窗口上视图端口的高度和宽度。同样,此解决方案仅在地图保持静止且不放大或平移时有效,在这种情况下,您必须在函数中考虑更多偏移和比例@AHamburglerSo我需要想出一个解决方案,因为我的地图比窗口大,所以它具有垂直和水平滚动功能,所以你可以看到地图的其他区域(也称为平移)。