Объявление
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");
}
}
}
Посмотрите так же: Маска слоя, в частности "Выборочное наложение лучей" для подробного примера маскирования слоя.

