unity Editor我使用的版本是2019.4LTS,建议使用这一个版本的编辑器,2020版的似乎不再内置openVR了。
另外需要准备一个VR headset,我使用的是Oculus quest2,通过Oculus Link连接的电脑
在unity编辑器中,Edit ->Project Settings -> Player -> XR(有些在other settings),把Virtual Reality Supported 选中
首先,在unity的左上角,点击Window -> Package Manager 一直向下滑找到XR Legacy Input Helpers,点击安装
进入 tilia的网站,在创建的unity项目中,打开项目文件夹。在Project视图中,进入Packages,右键选中show in explorer,打开manifest(可以使用文本打开)
在tilia网站中,将红线的代码复制到manifest文件中的'dependencies'
上,
复制完成后保存即可。
在Tilia网站中,复制Track Alias
和Unity XR
,复制的代码放入manifest的'dependencies'
之内,保存之后unity编辑器会自动加载所有的包。
tips: 可以在Window -> Package Manager看到所有被导入的包
在Project视图,找到CameraRigs UnityXR,点击Runtime -> Perfabs,把CameraRigs.UnityXR拖进项目中,因为CameraRigs.UnityXR自带摄像头,所以需要将项目原有的main camera删除掉。
同样的方式,把TrackAlias拖进项目中。
然后查看TrackAlias的Inspector,我们需要去跟踪UnityXR这个摄像头,所以找到Camera Rigs的Elements属性,size填1(我的项目中有两个摄像头所以填了2,不用太在意)然后将UnityXR拖进Element中。
进入Tilia网站,复制Unity Input Manager进项目。回到unity中会弹出一个窗口,点击 add input definitions即可。
进入图示的路径,找到ControllerMappings,因为我使用的是quest2设备,所以我将oculus.TouchLeftController(/RightController)两个预制体拖进了项目中。
使用OpenVR应该都是可以的。
随后,在Tilia中, 找到Interactions下的Interactables,将此包引入项目。
找到刚刚引入的包,到如图的路径下
这个预制体我们想让它成为我们的左右手,所以我们可以设置这个预制体成为alias,
在层级视图中,打开CameraRig.TrackedAlias ->Aliases 找到LeftControllerAlias和RightControllerAlias,分别拖入一个Intoractions.Interactor.perfab进去,可以给预制体重命名,用来区分一下,left,right之类的。
在Interactor的inspector下,找到Interactor Settings,设置Velocity Tracker属性就是他们的ControllerAlias(左右两只手都一样设置),Grab Action属性表示设置抓取动作的按键,我们在层级视图中打开Input.UnityInputManager.left/right两个预制体(名字太长了,知道哪两个对象就行),在InputActions -> Left/RightGrip ->Left/RightGrip_Press,将这个对象拖进Interactor Settings的Grab Action属性。
选中想要变成可互动对象的预制体,点击左上角window -> Tilia ->Interactions -> Interactable Creator,然后会弹出一个对话框,点击Convert to Interactable即可。随后,该对象即会成为可互动对象,拥有很多属性。但是我们不需要改变特别多的属性
看到对象的inspector视窗,找到Primary Action Settings 和 Secondary Action Settings,Primary属性是设置物体第一次抓住会发生什么事情,Secondary设置的是当你第一次抓住之后,再用另一个Controller抓住这个物体会发生什么。
根据图示设置属性即可。Grab Offset属性如果设置为Precision Point,那么当你抓住这个物体时,会以确切的位置显示。
至此,一个简单的可互动场景应该算是建立好了。
点击play,进入游戏模式,戴上HeadSet,然后Expolor~
如果出现了无法抓取物体,可以查看一下是否对Object设置了碰撞体。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删