gpt4 book ai didi

c# - 从空间中的工作点获取节点

转载 作者:行者123 更新时间:2023-11-30 18:19:18 24 4
gpt4 key购买 nike

我试图让一个节点在世界空间中形成一个位置。节点以网格方式排列

下图是节点网格是如何编号为 0 - 3 的每个大网格的图像由 50 x 50 的节点网格组成。

每个网格中的红点表示当点击世界中的某个点时检查了哪些节点。

对于标记为 0 的大网格,每个节点都可以正确访问

网格 1 具有正确的 X 值(从左到右的位置)但 Z 被限制在网格的顶部

网格 2 相反,X 值被限制在顶部范围内,Z 值是正确的

Grid 3 X 和 Z 都被限制在最大值。 Grid

下面是世界坐标的网格代码

    public Node NodeFromWorldPoint(Vector3 worldPosition)
{

//Gets the Large grid number 0-3
float Largex = worldPosition.x / (4 * gridWorldSize.x);
float LargeZ = worldPosition.z / (4 * gridWorldSize.z);
Largex = Mathf.Clamp01(Largex);
LargeZ = Mathf.Clamp01(LargeZ);
int lx = Mathf.RoundToInt((2 - 1) * Largex);
int lz = Mathf.RoundToInt((2 - 1) * LargeZ);

int tilenumber = lx * 2 + lz;

//get the position of the smaller grid
float percentX = worldPosition.x / (gridWorldSize.x * 2 );
float percentZ = worldPosition.z / (gridWorldSize.z * 2);
percentX = Mathf.Clamp01(percentX);
percentZ = Mathf.Clamp01(percentZ);
int x = Mathf.RoundToInt((gridSizeX - 1 ) * percentX);
int z = Mathf.RoundToInt((gridSizeZ - 1) * percentZ);
var gc = grids.ElementAt(tilenumber);
return gc[x, z];
}

最佳答案

如果我理解正确,那么这应该对你有用。它包括节点的下边界并排除上边界.. 即如果你给世界点 2,0 那么它将返回第二个节点。

 public Node NodeFromWorldPoint(Vector3 worldPosition)
{

//Gets the Large grid number 0-3
int LargeX = (int)worldPosition.x / (2 * gridWorldSize.x);
int LargeZ = (int)worldPosition.z / (2 * gridWorldSize.z);
int tilenumber = LargeX*2 + LargeZ;

//get the position of the smaller grid
float percentX = worldPosition.x/gridWorldSize.x - LargeX;
float percentZ = worldPosition.z/gridWorldSize.z - LargeZ;

int x = (int)percentX/gridSizeX;
int x = (int)percentZ/gridSizeZ;

var gc = grids.ElementAt(tilenumber);
return gc[x, z];
}

关于c# - 从空间中的工作点获取节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com