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

OverlapCapsuleCommand

структура в UnityEngine

Выполнено в:UnityEngine.PhysicsModule

Описание

Структура, используемая для настройки команды капсулы перекрытия, которая будет выполняться асинхронно во время выполнения задания.

Когда с помощью этой структуры вы планируете пакет команд перекрытия капсулой, они выполняются асинхронно. Результаты записываются в буфер результатов. Поскольку запись асинхронна, обращаться к буферу результатов можно только после завершения задания.

Результаты для команды с индексом N в буфере команд хранятся в индексе N * maxHits в буфере результатов.

Если maxHits больше, чем фактическое число результатов для команды, буфер результатов будет содержать некоторые неверные результаты, которые не попали ни в что. Первый неверный результат идентифицируется тем, что коллайдерный экземпляр ID равен 0. Второй и последующие неверные результаты не записываются в команду капсулы перекрытия, так что их коллайдерный экземпляр IDs не гарантированно равен 0. При итерации результатов цикл должен прекратиться, когда обнаруживается первый неверный результат.

Команда Overlap capsule также управляет тем, генерируют ли коллайдеры Trigger hit. Вы должны соответственно настроить maxHits и размер массива результатов, чтобы хранить все hits. Используйте QueryParameters для управления флагами hit. QueryParameters.hitBackfaces и QueryParameters.hitMultipleFaces флаги не поддерживаются и не будут иметь никакого влияния на результаты перекрытия.

Примечание: В профиле регистрируется только BatchQuery.ExecuteOverlapCapsuleJob. Информация о количестве запросов не регистрируется.

Дополнительные ресурсы: Physics.OverlapCapsule, ColliderHit.

using Unity.Collections;
using UnityEngine;

public class CapsuleOverlap : MonoBehaviour { //Print iname of GameObjects inside the capsule void BatchOverlapCapsule() { var commands = new NativeArray<OverlapCapsuleCommand>(1, Allocator.TempJob); var results = new NativeArray<ColliderHit>(3, Allocator.TempJob);

commands[0] = new OverlapCapsuleCommand(Vector3.zero, Vector3.one, 10f, QueryParameters.Default);

OverlapCapsuleCommand.ScheduleBatch(commands, results, 1, 3).Complete();

foreach (var hit in results) Debug.Log(hit.collider.name);

commands.Dispose(); results.Dispose(); } }

Свойства

Свойство Описание
physicsSceneСцена физики, в которой запускается эта команда.
point0Центр сферы в начале капсулы.
point1Центр сферы на конце капсулы.
queryParametersСтруктура для указания дополнительных параметров для пакетного запроса, таких как маска слоя или триггеры попадания.
radiusРадиус капсулы.

Конструкторы

Конструктор Описание
OverlapCapsuleCommandСоздайте OverlapCapsuleCommand.

Статические методы

Метод Описание
ScheduleBatchРасписание пакета команд капсулы перекрытия для выполнения в задании.