Объявление
public static int OverlapSphereNonAlloc(Vector3 position, float radius, Collider[] results, int layerMask = AllLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
position | Центр сферы. |
radius | Радиус сферы. |
results | Буфер для хранения результатов. |
layerMask | Маска слоя определяет, какие слои коллайдеров включать в запрос. |
queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращает
int Возвращает количество коллайдеров, сохраненных в буфере results
.
Описание
Рассчитывает и сохраняет коллайдеры, соприкасающиеся со сферой или находящиеся внутри нее, в указанный буфер.
Не пытается увеличить буфер, если в нем заканчивается место. Длина буфера возвращается, когда буфер заполнен. Аналогично Physics.OverlapSphere, но не создает мусора.
Смотрите так же: Physics.AllLayers.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void ExplosionDamage(Vector3 center, float radius)
{
int maxColliders = 10;
Collider[] hitColliders = new Collider[maxColliders];
int numColliders = Physics.OverlapSphereNonAlloc(center, radius, hitColliders);
for (int i = 0; i < numColliders; i++)
{
hitColliders[i].SendMessage("AddDamage");
}
}
}
Посмотрите так же: Маска слоя, в частности "Выборочное наложение лучей" для подробного примера маскирования слоя.