Объявление
public static Collider[] OverlapBox(Vector3 center, Vector3 halfExtents, Quaternion orientation = Quaternion.identity, int layerMask = AllLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
center | Центр коробки. |
halfExtents | Половина размера коробки в каждом измерении. |
orientation | Вращение коробки. |
layerMask | Маска слоя, используемая для выборочного игнорирования коллайдеров при создании луча. |
queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращает
Collider[] Коллайдеры, которые пересекаются с данным полем.
Описание
Найти все коллайдеры, соприкасающиеся с данным полем или находящиеся внутри него.
Создает невидимый блок, который вы определяете, который проверяет коллизии, выводя информацию о любых коллайдерах, которые соприкасаются с блоком.
//Прикрепите этот скрипт к вашему GameObject. Этот GameObject не обязательно должен иметь компонент Collider.
//Установите в поле Маска Слой в Инспекторе слой, в котором вы хотите видеть коллизии (установите значение Все, если вы не уверены).
//Создаем второй объект Game для проверки столкновений. Убедитесь, что ваш GameObject имеет компонент Collider (если его нет, нажмите кнопку Добавить компонент в инспекторе GameObject и перейдите в раздел Physics>Box Collider).
// Разместите его так, чтобы он перекрывал другой GameObject.
//Нажмите Play, чтобы увидеть, как консоль выводит имя вашего второго GameObject
//Этот скрипт использует OverlapBox, который создает невидимый боксколлайдер, обнаруживающий множественные столкновения с другими коллайдерами. В этом случае OverlapBox имеет тот же размер и положение, что и GameObject, к которому вы его присоединяете (заменяет BoxCollider). составная часть).
using UnityEngine;
public class OverlapBoxExample : MonoBehaviour
{
bool m_Started;
public LayerMask m_LayerMask;
void Start()
{
// Используйте это, чтобы убедиться, что Gizmos отрисовываются в Mode.
m_Started = true;
}
void FixedUpdate()
{
MyCollisions();
}
void MyCollisions()
{
// Используйте OverlapBox, чтобы определить, есть ли какие-либо другие коллайдеры в пределах этой области.
// Используем центр GameObject, половину размера (в качестве радиуса) и поворот. Это создает невидимую рамку вокруг вашего GameObject.
Collider[] hitColliders = Physics.OverlapBox(gameObject.transform.position, transform.localScale / 2, Quaternion.identity, m_LayerMask);
int i = 0;
// Проверить, когда новый коллайдер соприкоснется с коробкой
while (i < hitColliders.Length)
{
//Output all of the collider names
Debug.Log("Hit : " + hitColliders[i].name + i);
//Increase the number of Colliders in the array
i++;
}
}
// Нарисуйте Box Overlap как гизмо, чтобы показать, где он в настоящее время тестируется. Нажмите кнопку Gizmos, чтобы увидеть это.
void OnDrawGizmos()
{
Gizmos.color = Color.red;
// Check that it is being run in Play Mode, so it doesn't try to draw this in Editor mode
if (m_Started)
// Draw a cube where the OverlapBox is (positioned where your GameObject is as well as a size)
Gizmos.DrawWireCube(transform.position, transform.localScale);
}
}