将坐标转换为不同的坐标系?

嘿,各位,我正在制作一个GUI,GUI上的图像使用计算机的坐标系,如这个

我试图将坐标转换为正常的坐标系,如这个

我疯狂了,无法解决这个问题。我现在正在使用LUA。但是当我在图像上点击时,我会得到第一个坐标系的坐标,但是需要将其转换为第二个坐标系,以便在游戏中使用。

我的GUI是什么样子的

输入图像描述

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

点赞
用户7632578
用户7632578

假设您的世界地图在视口之外无法扩展,那么下面的代码应该可以工作。

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)) -- 返回 0,0

当然,您可能需要根据您是否能够在您的世界中缩放或平移来修改该函数,但由于您没有提供这些细节,我将假设这就是您需要的。

2018-07-30 15:50:33