使用此结构体设置球形投射命令,该命令在作业期间异步执行。
当您使用此结构体安排一批球形投射时,球形投射将异步且并行执行。每个球形投射的结果都写入结果缓冲区。由于结果是异步写入的,因此在作业完成之前,您无法访问结果缓冲区。
命令缓冲区中索引为 N 的命令的结果存储在结果缓冲区中索引为 N * maxHits 的位置。
Spherecast 命令还允许您控制触发碰撞体和背面三角形是否生成命中。使用 QueryParameters 控制命中标志。
注意:仅将 BatchQuery.ExecuteSpherecastJob 记录到探查器中。查询计数信息不会记录。
其他资源:Physics.Spherecast。
using Unity.Collections; using Unity.Jobs; using UnityEngine;
public class SpherecastExample : MonoBehaviour { void Start() { // Perform a single sphere cast using SpherecastCommand and wait for it to complete // Set up the command and result buffers var results = new NativeArray<RaycastHit>(2, Allocator.TempJob); var commands = new NativeArray<SpherecastCommand>(1, Allocator.TempJob);
// Set the data of the first command Vector3 origin = Vector3.forward * -10; Vector3 direction = Vector3.forward; float radius = 0.5f;
commands[0] = new SpherecastCommand(origin, radius, direction, QueryParameters.Default);
// Schedule the batch of sphere casts var handle = SpherecastCommand.ScheduleBatch(commands, results, 1, 2, default(JobHandle));
// Wait for the batch processing job to complete handle.Complete();
// If batchedHit.collider is not null there was a hit foreach (var hit in results) { if (hit.collider != null) { // Do something with results } }
// Dispose the buffers results.Dispose(); commands.Dispose(); } }
方向 | 球形投射的方向。 |
距离 | 球体应检查碰撞的最大距离。 |
原点 | 球形投射在世界坐标中的起点。 |
物理场景 | 此命令在其运行的物理场景中。 |
查询参数 | 用于指定批处理查询的其他参数的结构,例如图层蒙版、命中触发器和命中背面。 |
半径 | 投射球体的半径。 |
SpherecastCommand | 创建一个 SpherecastCommand。 |
ScheduleBatch | 安排一批球形投射在作业中执行。 |