使用此结构来设置在作业过程中异步执行的胶囊体投射命令。
使用此结构计划一批胶囊体投射时,这些胶囊体投射以异步方式并行执行。每个胶囊体投射的结果会写入结果缓冲区。由于结果是异步写入,因此在作业完成之前无法访问结果缓冲区。
The results for a command at index N in the command buffer are stored at index N * maxHits in the results buffer.
Capsulecast command also allows you to control whether or not Trigger colliders and back-face triangles generate a hit. Use QueryParameters to control hit flags.
Note: Only BatchQuery.ExecuteCapsulecastJob is logged into the profiler. Query count information is not logged.
另请参阅:Physics.Capsulecast。
using Unity.Collections; using Unity.Jobs; using UnityEngine;
public class CapsulecastExample : MonoBehaviour { void Start() { // 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>(2, Allocator.TempJob); var commands = new NativeArray<CapsulecastCommand>(1, Allocator.TempJob);
// 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, QueryParameters.Default);
// Schedule the batch of capsulecasts var handle = CapsulecastCommand.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(); } }
direction | 胶囊体投射的方向。 |
distance | 胶囊体投射检查是否有碰撞的最大距离。 |
physicsScene | The physics scene this command is run in. |
point1 | 胶囊体在 start 处的球体中心。 |
point2 | 胶囊体在 end 处的球体中心。 |
queryParameters | Structure for specifying additional parameters for a batch query such as layer mask, hit triggers and hit backfaces. |
radius | 胶囊体的半径。 |
CapsulecastCommand | 创建 CapsulecastCommand。 |
ScheduleBatch | Schedules a batch of capsule casts to perform in a job. |