Physics2D.OverLapBox обнаруживает объекты, которые следует игнорировать - PullRequest
0 голосов
/ 05 октября 2019

Я использую скрипт, который просматривает плитки вокруг моего GameObject, чтобы определить, может ли он обнаружить коллайдер, через Physics2D.OverlapBox. Моя проблема заключается в том, что мой проигрыватель должен игнорироваться OverLapBox, так как я настроил его на просмотр слоев, в которых его нет, но он обнаруживается каждый раз.

Мой проигрыватель находится в слое "Default".

private void SpawnBasicWalls()
{
    int layersToScan = LayerMask.GetMask("Floor", "Wall");
    //for each tile around this tile
    for (int x = -1; x <= 1; x++)
    {
        for (int y = -1; y <= 1; y++)
        {
            Vector2 targetPos = new Vector2(transform.position.x + x, transform.position.y + y);
            Collider2D hit = Physics2D.OverlapBox(targetPos, Vector2.one * 0.8f, layersToScan);
            //if there isn't a tile around
            if (!hit)
            {
                //Add a wall in that empty adjacent tile.
                GameObject goWall = Instantiate(dungMan.wallPrefab, targetPos, Quaternion.identity) as GameObject;
                goWall.name = dungMan.wallPrefab.name;
                goWall.transform.SetParent(dungMan.transform);

            }
            else
            {
                Debug.Log(hit);
            }
        }
    }
    //Once it's done, the gameobject is useless and thus is destroyed
    Destroy(gameObject);
}

Если кто-нибудь может сказать мне, что я делаю неправильно, я был бы очень признателен.

1 Ответ

2 голосов
/ 05 октября 2019

Physics2D.OverlapBox(targetPos, Vector2.one * 0.8f, layersToScan) в основном вызывает Physics2D.OverlapBox(point, size, angle) - это означает, что вы отправляете слои (приведенные к int) как угол.

Вам нужно использовать одну из перегрузок, которые получают маску слоя, и сделатьуверен, что вы передаете его в правильном параметре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...