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

OverlapCapsuleCommand

UnityEngine 中的结构体

/

实现于:UnityEngine.PhysicsModule

建议更改

成功!

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

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

用于设置重叠胶囊命令的结构体,以便在作业期间异步执行。

当您使用此结构体调度一批重叠胶囊命令时,这些命令将异步执行。重叠胶囊的结果将写入结果缓冲区。由于结果是异步写入的,因此在作业完成之前无法访问结果缓冲区。

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

如果 maxHits 大于命令的实际结果数,则结果缓冲区将包含一些无效结果,这些结果未命中任何物体。第一个无效结果由碰撞器实例 ID 为 0 来识别。第二个及后续无效结果不会写入重叠胶囊命令,因此它们的碰撞器实例 ID 不保证为 0。在迭代结果时,当找到第一个无效结果时应停止循环。

重叠胶囊命令还控制触发碰撞器是否生成命中。您应相应地调整 maxHits 和结果数组大小以存储所有命中。使用 QueryParameters 控制命中标志。QueryParameters.hitBackfacesQueryParameters.hitMultipleFaces 标志不受支持,并且不会对重叠结果产生任何影响。

注意:只有 BatchQuery.ExecuteOverlapCapsuleJob 会记录到探查器中。查询计数信息不会记录。

其他资源:Physics.OverlapCapsuleColliderHit

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调度一批重叠胶囊命令以在作业中执行。