Единство - удаление других экземпляров, появляющихся поверх другого, но сохранение оригинала - PullRequest
0 голосов
/ 18 июня 2020

Итак, я работаю над некоторыми вещами для генерации уровней в Unity, и у меня есть несколько кубов, появляющихся по всему миру. У меня сейчас это работает так: каждая плитка пола проверяет, есть ли вокруг нее «воздух», и если да, то порождает стену. Но, если у меня есть ситуация, когда это воздушный блок между двумя этажами, он создаст две стены. Есть ли способ проверить, есть ли несколько в одной позиции, но не допустить разрушения? Спасибо!

ps Тоже ничего не стоит, я размещаю стены с помощью Raycast, поэтому пол будет проверять в 4 направлениях одним ударом. Я полагаю, он проверяет все 4 направления, не останавливаясь, когда помещает куб. Так что, может быть проблема ...

1 Ответ

0 голосов
/ 18 июня 2020

U может попытаться создать перекрывающуюся сферу, в которую попадает raycast, таким образом будут обнаружены все объекты в определенном радиусе (а также объекты, которые находятся друг в друге)

void GetWalls(Vector3 raycastTargetPosition, float radius)
    {
        Collider[] hitColliders = Physics.OverlapSphere(center, radius);
        int i = 0;
        while (i < hitColliders.Length)
        {
            hitColliders[i].SendMessage("AddDamage");
            i++;
        }
    }
...