版本:Unity 6 (6000.0)
语言中文
  • C#

CapsulecastCommand

UnityEngine 中的结构

/

实现:UnityEngine.PhysicsModule

建议我们进行更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户建议的每次更改,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,我们无法提交您的建议更改。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

说明

使用此结构在作业期间异步执行创建胶囊投射命令。

当您使用此结构安排一批胶囊投射时,将异步且并行地执行胶囊投射。每个胶囊投射的结果都写入结果缓冲区。由于结果是以异步方式写入的,因此在作业完成之前无法访问结果缓冲区。

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

胶囊投射命令还允许您控制是否让触发器碰撞体和背面三角形生成命中。使用 QueryParameters 来控制命中标志。

注意:只有在性能分析器中记录了 BatchQuery.ExecuteCapsulecastJob。不记录查询计数信息。

其他资源: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(); } }

属性

方向胶囊投射的方向。
距离胶囊投射检查碰撞的最大距离。
物理场景运行此命令的物理场景。
点1胶囊开始处的球体的中心。
点2胶囊末端的球体的中心。
查询参数用于指定批处理查询的其他参数(例如图层蒙版、命中触发器和命中背面)的结构。
半径胶囊的半径。

构造函数

CapsulecastCommand创建 CapsulecastCommand。

静态方法

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