命中测试

命中测试示例

 

该示例演示了如何对现实世界中的点和面进行命中测试。有关通过射线投射进行命中测试的基本信息,以及 AR Foundation 的 AR Raycast Subsystem 组件的功能,请参阅 Unity 文档。要使用此功能,必须在 OpenXR 插件设置中启用,路径为 Project Settings > XR Plug-in Management > OpenXR (> Android Tab)。文档中“射线投射”和“命中测试”这两个术语可以互换使用。

 

示例工作原理

 图片1.png


将 AR Raycast Manager 添加到 AR Session Origin GameObject 将启用射线投射子系统。如果没有可用的平面管理器,命中测试功能将创建命中测试的基础。如果以后添加了平面管理器,基础平面检测子系统将根据该管理器进行调整,命中追踪可能会有所不同(例如,结果取决于平面管理器上设置的平面过滤器)。为了获得最佳结果,如果使用命中测试,也请在平面管理器上启用所有过滤器。如果不使用单独的平面管理器,命中测试功能将自动处理这些设置以获得最佳效果。

 

AR Raycast Manager 组件提供了一个字段,用于定义在成功与平面相交时生成的预制体。在本示例中,该字段被留空,因为该功能由 Hit Testing Sample Controller 组件实现。

 

射线投射管理器的 Raycast 函数将返回一个布尔值,表示射线是否击中了平面。命中结果将被添加到 ARRaycastHit 列表中,并按距离升序排列(即最近的优先)。

 

图片2.png


示例场景中有一个默认的红色 gizmo 指示器,它会跟随视线移动。每帧都会从头部的起始点向视线方向发射一条射线。如果射线击中一个平面,指示器 gizmo 的颜色会发生变化,并移动到击中位置。如果射线没有击中任何物体,指示器 gizmo 将保持不变。