在unity中有关VRTK的射线使用
来源:互联网 发布:keras tensorflow关系 编辑:程序博客网 时间:2024/06/04 18:44
在unity中要想开发VR项目必须添加SteamVR插件,我们还可以通过VRTK插件,用已有的框架进行VR开发,VRTK必须在SteamVR插件基础上进行开发。本节就是通过VRTK插件中的射线操作,进行人物的位移和对物品的抓取两种行为。
一、搭建VR环境
二、手柄发射射线使人物位移
需要注意的是Enable Teleport这个属性一定要勾选上,否则无法进行射线瞬移功能。Pointer Randerer要选择一种射线,否则就无法看到手柄发射的射线,而Pointer Interaction Settings的两项属性是控制抓取功能的,尤其是Grab To Pointer Tip这属性可以精确到点的抓取。
通过以上的脚本就能确定人物的瞬移功能。按着手柄Touchpad键,手柄会发射一条抛物曲线到地面上,松开按键,人物就能瞬移到目标点。
三、手柄对物体的抓取
通过前边对手柄实现瞬移功能的理解,我们知道了使用手柄的基本操作,就是通过VRTK__ControllerEvents脚本监听按键事件,通过VRTK_Straight Pointer Renderer和VRTK_Pointer两个脚本画出直线射线进行相关的交互功能。
添加VRTK_Interact Grab,VRTK_Interact Touch,VRTK_Interact Use,VRTK_Interact Use_Unity Events等脚本使手柄有抓取功能 。其中的Touch脚本是当手柄接触物体是才能触发。
需要注意的是脚本中的Controller Events属性要添加需要监听的手柄,在Use的Events中添加手柄,选择VRTK_InteractGrab.AttemptGrab方法,这样手柄的抓取功能基本就设置好了,然后在对需要抓取的物品进行设置就能实现手柄抓取物品的功能。
被抓取的物体Cube方块需要添加VRTK_Interactable Object脚本,从而确定手柄的事件能够监听到Cube上。
其中脚本中的Is Grabbable是确定物体能否被抓取,Stay Grabbed On Tele是确定瞬移的时候还能保持抓取物体的状态。而Grab Attach Mechanic和Secondary Grab Action两个属性是通过添加VRTK_Child Of Controller Grab Attach和VRTK_Swap Controller Grab Action两个脚本进行添加的。脚本添加完以后,要想让物体被抓取还有一个重要的地方,就是让物体有碰撞和刚体,否则还是无法进行物体的抓取。
通过按着手柄的Touchpad键,手柄发射一条直射线,当射线射到Cube上,按着Trigger键就能通过射线把Cube抓起来,当手柄接触Cube时,按着Grip可以把Cube直接抓到手柄上,也能实现抓取功能。
四、总结
在VR开发中需要注意的几点就是项目中要有支持VR设备的插件,要能够获取到VR的眼镜和手柄设备,要对设备进行监听事件处理,要明确不同设备需要实现的功能,明白插件自带脚本的运用,便能实现简单的VR开发。
- 在unity中有关VRTK的射线使用
- 在Unity中使用射线
- <VRTK学习一> 初识vrtk,如何在自己的项目中使用vrtk
- 【Unity】射线中LayerMask参数的使用方式
- 如何在VR场景中位移与行走Unity VRTK - SteamVR Unity Toolkit针对VR开发的工具包
- Unity中射线的用法小结
- unity射线碰撞检测+LayerMask的使用
- 学习Unity射线的创建使用
- Unity射线检测使用
- 使用VRTK在场景中实现传送 (一)
- 使用VRTK在场景中实现传送 (二)
- 使用VRTK在场景中实现传送 (三)
- 使用VRTK在场景中实现传送 (四)
- unity中使用射线碰撞来触发AR中的交互
- unity中使用射线碰撞来触发AR中的交互
- unity中EventSystem射线检测结果的排序规则
- unity中关于射线发射函数的一些解释
- unity中通过射线用Button控制ui的出现
- SQL server image截取部分数据,转int类型
- WOJ1024-Exploration
- 无锁单线程内存池
- WebSocket刨根问底(四)之五子棋大战江湖
- 怎样在不处理的情况下在ABBYY FineReader 12中添加图像
- 在unity中有关VRTK的射线使用
- FormData 对象的使用
- 南京 ccpc邀请赛 一记【补】
- 大数据在建筑行业落地开花
- swift 去除字符串中首尾位置的空格
- touch触摸事件
- STM一键下载
- Spring所需要的jar包
- 分布式基本副本控制协议