ARFoundation入门——持续射线投射(Android)

开发环境

Unity:2021.1.14flc1
导入Package:
AR Foundation:4.1.7
ARCore XR Plugin:4.1.7

持续射线投射案例

制作一个随着镜头移动的位于屏幕中心的平面

ARFoundation持续射线投射

步骤

注意要提前配置好AR Raycast Manager才可以使用
可以参考ARFoundation入门——AR射线检测(Android)

  1. 在AR场景中创建一个Plane,这里平面不要设置太大,影响观察,我设置的Scale是(0.01,0.01,0.01)请添加图片描述

  2. 在AR Session Oringin中创建脚本:

public class MonoBehaviour_01 : MonoBehavi
### ARFoundation射线检测的实现 在 ARFoundation 中,`ARRaycastManager` 是用于执行射线投射的核心组件。为了使射线投射正常工作,在 `AR Session Origin` 对象上需添加 `AR Raycast Manager` 脚本[^2]。 #### 射线投射的具体实现方式如下: 创建并配置好 `ARRaycastManager` 后,可以调用其 `Raycast` 方法来执行射线投射操作。此方法接受屏幕坐标作为输入参数,并返回一系列命中结果 (`List<ARRaycastHit>`)。如果存在有效的追踪对象(例如已识别的平面),则列表中会包含至少一个元素;否则为空。 下面是一个完整的 C# 代码片段展示如何利用 `ARRaycastManager` 来实现在检测到的平面上放置物体的功能: ```csharp using UnityEngine; using UnityEngine.XR.ARFoundation; public class PlaceObjectOnPlane : MonoBehaviour { public GameObject cubePrefab; // 预制件资源 private ARRaycastManager _raycastManager; void Start() { _raycastManager = GetComponent<ARRaycastManager>(); } void Update() { Vector2 screenCenter = new Vector2(Screen.width / 2, Screen.height / 2); if (_raycastManager.Raycast(screenCenter, Hits, TrackableType.PlaneWithinPolygon)) { Pose hitPose = Hits[0].pose; Instantiate(cubePrefab, hitPose.position, hitPose.rotation); } } static List<ARRaycastHit> Hits = new List<ARRaycastHit>(); } ``` 这段脚本会在每一帧尝试从屏幕中心位置发射一条射线,并检查是否有任何被标记为 “Plane Within Polygon” 类型的目标被捕获。如果有匹配的结果,则获取第一个命中的姿态信息(`hitPose`) 并据此实例化一个新的游戏对象于该处[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值