OverlapSphere центрирует неправильно - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь использовать overlapSphere, чтобы определить, содержит ли плитка на карте плиток игровой объект. Затем, если плитка еще не занята, в этой плитке будет создан новый игровой объект (если соблюдены некоторые другие условия). Я пытаюсь предотвратить наложение игровых объектов друг на друга. Однако у меня возникают проблемы с центрированием сфер вокруг правильного местоположения.

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;
        }
    }

Я использую «GetCellCenterWorld» в качестве центра моих перекрывающихся сфер, однако они, кажется, всегда начинаются в нижнем левом углу карты, в результате чего эта область карты становится полностью пустой, и объекты, которые находятся на карте, все еще накладываются друг на друга. (см. изображение)

The end result of using my current implementation. I have made the collider radius much larger than intended in order to make the issue easier to see

Моя путаница основана на том факте, что я использую тот же вектор3 (tilePos) для размещения игровых объектов. Все объекты перемещены в правильное положение, однако перекрывающиеся сферы остаются слева внизу.

...