戴上VR头盔,我们就被带进了另一个世界,常用的鼠标和键盘被我们遗忘在现实世界中了,在虚拟世界中的交互成为了一个大问题,好在Unity给我们准备了一个射线机制(这个大家不陌生,在“Unity开发备忘录000009:鼠标交互”一篇中我们用过),从而,我们找到了在VR设计中最简单的一个交互方法——头部射线交互。
Unity中的射线是一种碰撞检测机制,它是3D空间中的一点向一个方向发射的一条虚拟直线,在发射轨迹中与其他物体发生碰撞时,可获得被撞对象的信息。
Unity提供了两个射线类,一个是Ray射线类,另一个是RaycastHit射线投射信息类,前者用于发射射线,后者用于收集射线所碰撞到的物体身上的信息。
例如:Ray类可以声明一个ray变量,可以实现从当前物体的坐标(this.transform.position)处向前方发射一条射线(this.transform.forward)。
Ray ray = new Ray(this.transform.position, this.transform.forward);
当然,也可以用RaycastHit类声明一个变量,用它来接收被撞物体身上的信息,如:
RaycastHit hitInfo;