CapsulecastCommand

struct in UnityEngine

切换到手册

描述

使用此结构来设置在作业过程中异步执行的胶囊体投射命令。

使用此结构计划一批胶囊体投射时,这些胶囊体投射以异步方式并行执行。每个胶囊体投射的结果会写入结果缓冲区。由于结果是异步写入,因此在作业完成之前无法访问结果缓冲区。

命令缓冲区中索引 N 处的命令的结果会存储在结果缓冲区中索引 N 处。

另请参阅:Physics.Capsulecast。

using Unity.Collections;
using Unity.Jobs;
using UnityEngine;

public class Example : MonoBehaviour { private void CapsulecastExample() { // Perform a single capsule cast using CapsulecastCommand and wait for it to complete // Set up the command and result buffers var results = new NativeArray<RaycastHit>(1, Allocator.Temp); var commands = new NativeArray<CapsulecastCommand>(1, Allocator.Temp);

// Set the data of the first command Vector3 point1 = Vector3.up * -0.5f; Vector3 point2 = Vector3.up * 0.5f; Vector3 direction = Vector3.forward; float radius = 0.5f;

commands[0] = new CapsulecastCommand(point1, point2, radius, direction);

// Schedule the batch of capsulecasts var handle = CapsulecastCommand.ScheduleBatch(commands, results, 1, default(JobHandle));

// Wait for the batch processing job to complete handle.Complete();

// Copy the result. If batchedHit.collider is null, there was no hit RaycastHit batchedHit = results[0];

// Dispose the buffers results.Dispose(); commands.Dispose(); } }

变量

direction胶囊体投射的方向。
distance胶囊体投射检查是否有碰撞的最大距离。
layerMask用于在投射胶囊体时有选择地忽略碰撞体的 LayerMask。
point1胶囊体在 start 处的球体中心。
point2胶囊体在 end 处的球体中心。
radius胶囊体的半径。

构造函数

CapsulecastCommand创建 CapsulecastCommand。

静态函数

ScheduleBatch安排在一个作业中执行的一批胶囊体投射。