一、课程内容
抛物线指针
直线指针
左右手柄按键监听预设
手柄控制物体的移动和旋转
移动方式
门、开关、抽屉、旋钮等交互物体的实现
抓取物体与远距离抓取
ClickButton、ToggleButton、OptionButton
攀爬功能
瞬移实现
传送点
手柄震动
Demo
1.稻草人
2.HandGun
3.ShotGun
4.射箭
5.车库门上升和下降
注意:实现相关的操作都是需要创建不同的预设,然后预设之间相互关联和相互拖拽就可以实现了。缺点就是实现一个功能的话,用到的预设会比较多,这些可能要多记住。
二、前期准备
1.创建注册表。
将#### Tilia Packages的依赖导入注册表中
"scopedRegistries": [ { "name": "npmjs", "url": "https://registry.npmjs.org/", "scopes": [ "io.extendreality" ] } ],
在项目设置里面打开Package Manager,复制到如下内容:
创建注册表后,我们可以按需导入对应的模快了。
2.模块介绍
2.1 CameraRigs:
里面包含了我们启动的VR头盔,相当于我们所有模快中的基础包,后面使用的功能如VR的话都是要基于CameraRigs来的。
2.1.1 Spatial Simulator
这个主要是用来模拟VR的,如果使用这个的话,我们可以不插入VR头盔,使用键盘的WASD键来控制场景中的Player来进行移动,还有后期的射线,抓取,等一些交互。测试效果的时候可以用这个来进行测试。 同时我们也可以打开Spatial Simulator文档来进行学习。
2.1.2 Tracked Alias
理解为追踪器,用来追踪我们头盔和手柄的。用来追踪Camera的,也就是我们的VR摄像机camera rig,以及我们的手柄,都是可以用来追踪的。后期可以用来追踪的,后期我们用来配合camera rig来进行配套使用
创建Tracked Alias预设,将需要追踪的头盔拖拽到右侧中 参数信息
2.1.3 Unity XR
2.1.4 XR Plugin Framework
主要是包含了我们的预设,如果我们要使用VR模式的话,就是要导入XR Plugin Framework,Unity XR 里面包含了旧版的XR
2.2 Indicators(指针)
2.2.1 Object Pointers
对象指针
1.1. Adding A Curved Pointer
创建一个弯曲指针 曲线跟随哪个手柄
圆盘LeftTrackpad可以触摸、按下,也可以获取水平和垂直方向的值(值为float类型)
LeftTrackpad下的LeftTrackpad_Touch[16]就是触摸圆盘的时候触发曲线,并不需要按下触发。 LeftTrackpad_Press[8]就是按下圆盘的时候触发曲线。 绑定什么方式来触发曲线
编码实现触发对应的方法
ActionEventTest脚本文件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ActionEventTest : MonoBehaviour
{
public void Active(bool value)//手柄激活的时候触发
{
Debug.Log("Active" + value);
}
public void DeActive(bool value)//手柄取消激活的时候触发
{
Debug.Log("DeActive" + value);
}
public void ValueChange(bool value)//手柄触发改变值的时候触发
{
Debug.Log("ValueChange" + value);
}
public void UnValueChange(bool value)//手柄运行没有改变值的时候触发
{
Debug.Log("UnValueChange" + value);
}
}
注意:不同模式下的方法,返回值类型是不一样的,对应的在事件方法里面的形参也要对应。
将事件脚本挂载到你触发的类型(是否是圆盘触发、扳机键触发、抓取键触发),在这里放在圆盘键触摸模式下触发
运行项目的时候就会发现有对应的方法触发了。
LeftTrigger下的LeftTrigger_Axis[9]和LeftTrigger_Press实现逻辑 LeftTrigger_Axis[9]的类型返回的是一个float的值,当0表示没按下,1表示按下。它会触发ValueChange方法,可以实时的检测到当前扳机键按下的值的状态。
当扳机键按下,并且值处于0.9-1的时候,会触发LeftTrigger_Press里面的Transformed的方法,将float值转化为bool值,
2.2.2 Spatial Targets
空间目标
3.模块导入
显示Package包的文件管理器,打开manifest文件,copy在里面就行
不同模块之间采用逗号进行分割
导入成功后,在unity编辑器的package里面会有对应的包的文件夹
4.创建预设
创建CameraRigs.UnityXRPluginFramework预设,把原先主相机删除。
在编辑-项目设置-Player-勾选支持虚拟现实,添加openVR设备,这样我们就可以正常触发VR设备了。
注意:使用Unity XR或者XR Plugin Framework两个预设中的其中一个都是可以的,效果都是一样的。
5.如何移除包
包管理器-选择在项目中,对应的模块包移除即可
模块与模块之间依赖是有点问题,所以建议在项目中不移除包。
六、导入所有模块
copy所有模块即可