Страница 1 из 1

Соприкосновение объектов на сцене

СообщениеДобавлено: 14 янв 2017, 16:05
Neon
Здравствуйте , на сцене есть объект, в процессе игры он может соприкасается с другими различными объектами , мне нужно получить массив Объектов или массив коллайдеров этих объектов с которыми он прикасается . Я делал через
Синтаксис:
Используется csharp
 
Vector3 obj = (Parent[0].transform.position);
int rad=1;
hitColliders = Physics.OverlapSphere(obj, rad);
 

но это немного не то, коллайдеры находит, но объект может стоять рядом, а не прикасается к нему и все равно будет в массиве. Настройка радиуса тоже сомнительное занятие ведь это сфера, а объект квадратный.

Re: Соприкосновение объектов на сцене

СообщениеДобавлено: 14 янв 2017, 16:23
waruiyume
Physics.OverlapBox

Re: Соприкосновение объектов на сцене

СообщениеДобавлено: 14 янв 2017, 17:45
Neon
waruiyume писал(а):Physics.OverlapBox
Изображение
объект касается с 9 кубиками , пробую так
Синтаксис:
Используется csharp
 hitColliders = Physics.OverlapBox(Parent[0].transform.position,Vector3.up,Quaternion.identity);

Но Vector3.up и так понятно не правильно поскольку он будет икать только вверх, вот только что ставить вместо него?
Читаю доки. Функция принимает
Vector3 center - как я понимаю точка центра нашего box'a откуда должен начинать искать коллайдеры(Указываю Позицию объекта)
Vector3 halfExtents - не знаю что это(Если переводить документацию Половина размера окна в каждом измерении.)
Quaternion orientation -(Вращение коробки.) Как я понимаю мне это не нужно ставлю Quaternion.identity

Re: Соприкосновение объектов на сцене

СообщениеДобавлено: 14 янв 2017, 18:03
samana
А если так?

Синтаксис:
Используется csharp
BoxCollider myBox = GetComponent<BoxCollider>();

foreach (Collider coll in Physics.OverlapBox(transform.position, myBox.bounds.extents, Quaternion.identity))
{
    if (coll != myBox) Debug.Log(coll.name);
}

Re: Соприкосновение объектов на сцене

СообщениеДобавлено: 15 янв 2017, 12:24
Neon
samana писал(а):А если так?

Синтаксис:
Используется csharp
BoxCollider myBox = GetComponent<BoxCollider>();

foreach (Collider coll in Physics.OverlapBox(transform.position, myBox.bounds.extents, Quaternion.identity))
{
    if (coll != myBox) Debug.Log(coll.name);
}


Ругается на строке
Синтаксис:
Используется csharp
            foreach (BoxCollider coli in Physics.OverlapBox(Parent[0].transform.position, myBox.bounds.extents))
 

MissingComponentException: There is no 'BoxCollider' attached to the "Cubo" game object, but a script is trying to access it.
You probably need to add a BoxCollider to the game object "Cubo". Or your script needs to check if the component is attached before using it.
Говорит нету Колайдеров на объекте, хотя их там очень много только сам объект кубо - это Родитель, он без бокс коллайдера, внутри кубики с коллайдерами

Re: Соприкосновение объектов на сцене

СообщениеДобавлено: 15 янв 2017, 13:53
Neon
samana писал(а):А если так?

Синтаксис:
Используется csharp
BoxCollider myBox = GetComponent<BoxCollider>();

foreach (Collider coll in Physics.OverlapBox(transform.position, myBox.bounds.extents, Quaternion.identity))
{
    if (coll != myBox) Debug.Log(coll.name);
}

Все ответ нашел , спасибо что подтолкнули на коллайдеры
Вот решение если кому то пригодится
Синтаксис:
Используется csharp
 GameObject[] Parent;
 Collider[] hitColliders;
 Parent[0] = GameObject.Find("Central (2)"); // Нашли объект который хотим проверить
 BoxCollider myBox = Parent[0].GetComponent<BoxCollider>(); // Получили его бокс коллайдер
 hitColliders = Physics.OverlapBox(myBox.center, myBox.size/2f,myBox.transform.rotation); // Получили массив коллайдеров с которыми он контачит