ARFoundation快速入门-11Raycasting

一、Raycasting简介

Raycasting:直译为射线投射,指的是从三维空间,往一个方向发射一条无限长的射线,碰撞到平面就返回碰撞到平面的集合。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

/// 射线投射测试
[RequireComponent(typeof(ARRaycastManager))]
public class ARRaycastTest : MonoBehaviour
{
    private static List Hits;
    private ARRaycastManager mRaycastManager;

    private void Start()
    {
        Hits = new List();
        mRaycastManager = GetComponent();
    }

    //从屏幕坐标中发射一条射线,检测是否碰撞到物体,返回碰撞到物体的位置信息
    public bool Detect(Vector2 touchPs,out Vector3 ps)
    {
        if (mRaycastManager.Raycast(touchPs, Hits, TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds))
        {
            var hitPose = Hits[0].pose;
            ps = hitPose.position;
            return true;
        }

        ps = Vector3.zero;
        return false;
    }
   
}

 

二、ARRaycastHit 

1.ARRaycastHit:保存的是发射碰撞物体的信息

2.Distance:float类型,获取从射线源到命中点的距离

3.trackableId:string类型,命中对象的唯一标识符

4.Pose:命中对象的姿态

5.hitType:TrackableType类型, 命中对象的类型

6.sessionRelativeDistance:在Session空间中从射线起点到碰撞点的距离

7.sessionRelativePose:在Session空间碰撞点的姿态

 

推荐学习资料

1.Unity官方API:学习一门技术,官方教程是最权威的

2.ARFoundation Samples :ARFoundation 示例地址

3. ARFoundation之路: 作者:yolon3000,目前找到的ARFoundation教程中最全面的

欢迎对AR技术感兴趣的朋友,加入QQ群:883655607 讨论 

你可能感兴趣的:(ARFoundation)