C# 球面对中不正确

C# 球面对中不正确,c#,unity3d,collider,C#,Unity3d,Collider,我试图使用重叠球体来确定平铺贴图中的平铺是否包含游戏对象。然后,如果该磁贴尚未被占用,将在该磁贴中生成一个新的游戏对象(如果满足某些其他条件)。我试图防止游戏对象彼此重叠。但是,我无法将球体集中在正确的位置 for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { Vector3 tilePos = tileM

我试图使用重叠球体来确定平铺贴图中的平铺是否包含游戏对象。然后,如果该磁贴尚未被占用,将在该磁贴中生成一个新的游戏对象(如果满足某些其他条件)。我试图防止游戏对象彼此重叠。但是,我无法将球体集中在正确的位置

for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                Vector3 tilePos = tileMap.GetCellCenterWorld(new Vector3Int(x, y, 0));
                if (terrainMap[x, y] == blocked)
                {
                    bool spawn = detectOverlap(tilePos, obstCheckRad);
                    if (spawn)
                    {
                        GameObject obstacle = Instantiate(obstaclePrefab) as GameObject;
                        obstacle.transform.position = tilePos;
                        obstacle.transform.eulerAngles = new Vector3(0, 0, (Random.Range(0, 359)));
                    }
                }
            }
        }
    }

    public bool detectOverlap (Vector3 center, float radius)
    {
        Collider[] collider = Physics.OverlapSphere(center, radius);
        if (collider.Length == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
for(int x=0;x
我使用“GetCellCenterWorld”作为重叠球体的中心,但是它们似乎总是起源于地图的左下角,导致地图的此区域完全为空,并且地图中其他位置的对象仍然彼此重叠。(见图)


我的困惑是基于我使用相同的矢量3(tilePos)来放置游戏对象这一事实。对象都被移动到正确的位置,但是重叠球体都保持在左下角。

'if(collider.Length抱歉,它应该是“0”,我在发布几分钟后在编辑中更改了它。我不知道tilemap的方向,但您是否尝试过
GetCellCenterWorld(新矢量3int(x,0,y))
取而代之的是?不幸的是,没有。随着对象被移动到其预定位置,“tilePos”的坐标显示正确,但是,即使每次我想要重叠球体时都使用“tilePos”,球体也只会在左下角生成。(我确实检查了你的建议,以防我愚蠢。)我是否遗漏了什么?是否有一个函数/方法可用于在创建重叠球体后将其移动到所需位置?