将坐标转换为其他坐标系?

时间:2018-07-29 23:04:09

标签: lua 2d coordinates converter

大家好,我正在制作一个GUI,我的GUI上的图像使用的计算机坐标系看起来像this

并且我试图将坐标转换为this

这样的普通坐标系

疯了不能解决这个问题。我正在使用LUA。但是,当我单击图像时,我得到了第一个坐标系的坐标,但随后需要转换为第二个坐标系,以便可以在游戏中使用。

我的GUI外观

enter image description here

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

1 个答案:

答案 0 :(得分:0)

假设您的世界地图没有延伸到视口之外,那么下面的方法应该起作用。

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

当然,您可能需要根据是否可以放大自己的世界或是否可以在自己的世界中平移来更改功能,但是由于您没有给我们提供这些详细信息,我我会假设这就是您所需要的。