Unity3d 当栅格未放置在世界位置0,0时,从世界坐标中查找最近的多维数组值

Unity3d 当栅格未放置在世界位置0,0时,从世界坐标中查找最近的多维数组值,unity3d,Unity3d,我有一张地图。我想从玩家世界的鼠标坐标中找到tiles数组的值 帮助解释:平铺贴图的左下世界位置通常为0,0。 世界坐标x14.2/y4.3对应于2DArray[14,4] 然而,我的网格的左下角可以是任何地方,例如-14,-10。我需要以某种方式计算出偏移量,以获得等效的2D数组值 我包括了一张图片,希望能解释 一位朋友帮我解答了这个问题。在伪代码中 gridX=Mathf.Round((worldposition.x-gridposition.x)/GridCellSizeX) 这是我在c中

我有一张地图。我想从玩家世界的鼠标坐标中找到tiles数组的值

帮助解释:平铺贴图的左下世界位置通常为0,0。 世界坐标x14.2/y4.3对应于2DArray[14,4]

然而,我的网格的左下角可以是任何地方,例如-14,-10。我需要以某种方式计算出偏移量,以获得等效的2D数组值

我包括了一张图片,希望能解释


一位朋友帮我解答了这个问题。在伪代码中

gridX=Mathf.Round((worldposition.x-gridposition.x)/GridCellSizeX)

这是我在c中使用的#


事实上,这个问题对我来说并不清楚。你不知道你的网格点在世界空间中的位置吗?还有,为什么需要另一个网格?您的网格是否会移动并使用用户输入重新创建?1.)我知道鼠标位于12,10。但我不知道如何将其与等效数组值关联起来。2)不,但为了论证,是的。我指的是网格最初是如何创建的。我们至少需要知道网格的一个点位置和点之间的距离。
    float gridcellYSize = height / ((float)rows-1);
    float gridcellXSize = width / ((float)columns-1) ;
    float gridX = Mathf.Abs (Mathf.Round ((worldPos.x - AspectUtility.screenWorldRect.xMin ) / gridcellXSize) );
    float gridY = Mathf.Abs (Mathf.Round ((worldPos.y - AspectUtility.screenWorldRect.yMax ) / gridcellYSize) );