Задать вопрос
Zefirot
@Zefirot

Как определить что под одним коллайдером находится другой?

допустим я создаю сетку из префабов у которых есть коллайдеры
for (float x = -25f; x <= 25f; x += 0.5f){
  for (float y = -25f; y <= 25f; y += 0.5f){
    CellX[Num] = Instantiate(objectX) as ObjectX;
    CellX[Num].transform.SetParent(ObjectBoardCells.transform);
    CellX[Num].transform.position = new Vector3(x, y, 1f);
    ++Num;
    }
  }

Как определить что созданный только что коллайдер не "задевает" какой-то другой до этого созданный, а если все же пересекается то что это за объект? (у которого так же есть коллайдер)
  • Вопрос задан
  • 203 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
AnanasikDev
@AnanasikDev
Инди разработчик игр
В принципе есть 2 варианта:
1. Создать скрипт, повесить его на все создаваемые Вами объекты. В нем объявить метод OnCollisionEnter или OnTriggerEnter. При использовании этих функций также есть доступ к пересеченному объекту. Оттуда уже можно сделать все необходимое. (Рекомендую этот способ)

2. Использовать одну из функций: Physics.Raycast, Physics.Spherecast и т.п. Raycast позволяет проверить только одно направление (можно и несколько, но для этого есть другие способы). Spherecast позволяет получить все
пересеченные объекты в заданном радиусе.

Надо также понимать, что работа с коллайдерами - это работа с физикой, а для этого необходим компонент Rigidbody (хотя бы на одном объекте из пары, в Вашем случае лучше иметь на всех). Можно также отключить использование гравитации, чтобы не мешала.

P.S.: функция Instantiate имеет следующую перегрузку: GameObject Instantiate(GameObject obj, Vector3 position, Quaternion rotation, Transform parent), которая позволит объединить 3,4,5 строчки так:

CellX[Num] = Instantiate(
                      objectX, 
                      new Vector3(x, y, 1f), 
                      objectX.transform.rotation, 
                      ObjectBoardCells.transform) 
                      as ObjectX;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы