Unity 6.3
0 онлайн 78 гостей 3 в системе
Вход

Physics.OverlapSphereNonAlloc

Declaration

public static int OverlapSphereNonAlloc(Vector3 position, float radius, Collider[] results, int layerMask = AllLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

Параметр Описание
должность Центр сферы.
радиус Радиус сферы.
результаты Буфер для хранения результатов.
layerMask Маска слоя Маска слоя определяет, какие слои коллайдеров включить в запрос.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры.

Возвращаемое значение

инт Возвращает количество коллайдеров, хранящихся в буфере results.

Описание

Рассчитывает и хранит коллайдеры, касающиеся или находящиеся внутри сферы, в предоставленном буфере.

Не пытается увеличить буфер, если у него заканчивается пространство. Длина буфера возвращается, когда буфер заполнен. Как Physics.OverlapSphere, но не генерирует мусор. Дополнительные ресурсы: Physics.AllLayers.

using UnityEngine;

public class ExampleClass : MonoBehaviour { // Declare hitColliders as a reusable field. private Collider[] hitColliders;

// Set the maximum number of colliders that can be detected at once. private const int maxColliders = 10;

void Awake() { // Initialize the array just once. hitColliders = new Collider[maxColliders]; }

void ExplosionDamage(Vector3 center, float radius) { // Reuse the pre-allocated array for Physics.OverlapSphereNonAlloc. int numColliders = Physics.OverlapSphereNonAlloc(center, radius, hitColliders);

// Iterate through detected colliders and send the AddDamage message. for (int i = 0; i < numColliders; i++) { hitColliders[i].SendMessage("AddDamage"); } } }

Дополнительные ресурсы: Схема лучевой проекции с разделом слоев Использование слоев в Unity.