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

RaycastCommand

UnityEngine 中的结构

/

UnityEngine.PhysicsModule 中实现

建议修改

成功!

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

关闭

提交失败

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

关闭

取消

说明

在作业中异步执行射线投射命令时用于设置该命令的结构。

当您使用此结构安排一批射线投射时,它们将异步执行且相互并行。射线投射的结果将写入结果缓冲区。由于结果是异步写入的,因此在作业完成之前无法访问结果缓冲区。

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

如果 maxHits 大于命令的实际结果数量,结果缓冲区中将包含一些未击中任何目标的无效结果。第一个无效结果的识别依据是碰撞体为 null。Raycast 命令不会写入第二个及以后的无效结果,因此无法保证它们的碰撞体为 null。在遍历结果时,应该在找到第一个无效结果时停止循环。

Raycast 命令还控制是否让触发器碰撞体和背面三角形生成一个击中。如果将 hitMultipleFaces 设置为 true,Raycast 命令将返回每个三角网格的多次击中。您应该相应地调整 maxHits 和结果数组大小以存储所有击中。对于实体对象(球体、胶囊、方框、凸包),这最多返回一个结果。使用 QueryParameters 控制击中标志。

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

其他资源:Physics.RaycastPhysics.RaycastAll

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

public class RaycastExample : MonoBehaviour { private void Start() { // Perform a single raycast using RaycastCommand and wait for it to complete // Setup the command and result buffers var results = new NativeArray<RaycastHit>(2, Allocator.TempJob);

var commands = new NativeArray<RaycastCommand>(1, Allocator.TempJob);

// Set the data of the first command Vector3 origin = Vector3.forward * -10;

Vector3 direction = Vector3.forward;

commands[0] = new RaycastCommand(origin, direction, QueryParameters.Default);

// Schedule the batch of raycasts. JobHandle handle = RaycastCommand.ScheduleBatch(commands, results, 1, 2, default(JobHandle));

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

// Copy the result. If batchedHit.collider is null there was no hit foreach (var hit in results) { if (hit.collider != null) { // If hit.collider is not null means there was a hit } }

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

属性

direction射线的朝向。
distance射线应检查碰撞的最大距离。
from射线在世界坐标中的起点。
physicsScene运行此命令的物理场景。
queryParameters用于指定批量查询附加参数的结构,如图层掩码、击中多个网格面、击中触发器和击中背面。

构造函数

RaycastCommand创建射线投射命令。

静态方法

ScheduleBatch调度一批要在作业中执行的射线投射。