| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 【Unity】虚拟现实 VRTK插件使用教程(二)人物传送、光标指针、传送规则、玩家区域检测 -> 正文阅读 |
|
[游戏开发]【Unity】虚拟现实 VRTK插件使用教程(二)人物传送、光标指针、传送规则、玩家区域检测 |
文章目录人物移动通常VR人物移动有三种方式:
传送要想实现传送,首先要给左(右)手控制器添加VRTK_Pointer组件和VRTK_Bezier Pointer Renderer组件,并将VRTK_Bezier Pointer Renderer组件拖拽到VRTK_Pointer组件的Pointer Renderer属性中。 实现结果如下图: 光标指针VRTK提供两种光标指针,即射线指针(VRTK_StraightPointerRenderer)和贝塞尔曲线指针(VRTK_Bezier Pointer Renderer)。通常情况下使用贝塞尔曲线指针较多。注意,VRTK_Pointer组件只是建立了一个指针,但不提供指针的具体位置和界面渲染,实际上使用哪种指针取决于Pointer Renderer属性指定了哪种指针组件。所以,VRTK_Pointer就像一个接口,提供了指针的基础规则,而真正产生指针数据和界面渲染的是VRTK_StraightPointerRenderer组件或VRTK_Bezier Pointer Renderer组件。 更换按键如果不想要触摸板按键,可以调整VRTK_Pointer组件下的Activation Button属性修改按键。 改变力度通过改变Height Limit Angle属性的大小可以调节传送高度的限制角度(可以理解为仰视角的角度限制),值越大可传送高度越高,设置方法如下图所示: 改变外观如果想改变曲线的外观,可以改变VRTK_Bezier Pointer Renderer组件Bezier Pointer Custom Appearance Settings属性下的四个属性,具体内容可参考VRTK实例022_Controller_CustomBezierPointer或实例036_Controller_CustomCompoundPointer。 Component内容拷贝【Unity小窍门】顺便学习一下拷贝组件的方法,在案例中的组件上点击Copy Component,再到自己的组件上点击Paste Component Values,这样就把别人的组件内容复制到自己的组件上了。 实现传送效果给Body附加传送组件(VRTK_Basic Teleport或VRTK_HeightAdjustTeleport),Basic的功能相对简单,建议使用HeightAdjust组件,因为此组件允许玩家传送到更高的位置,而Basic只能传送到当前高度以及下层的位置。 至此,基本的传送功能就实现了,下面进行进一步优化。 功能优化传送规则(设置传送禁区)如果想要限制部分区域不允许传送,可以给手柄控制器添加VRTK_PolicyList组件,并将此组件拖拽到VRTK_Pointer组件的Target List Policy属性中,如下图:
使用了VRTK插件后会自动生成一个Tag叫做ExcludeTeleport,我们可以将Operation选为Ignore,将Check Types选为Tag,将Element 0设置为ExcludeTeleport,再给不想让玩家传送的物体指定标签为ExcludeTeleport,这个物体就不能被传送了,如下图: 玩家区域碰撞检测当传送点为墙壁或者狭小空间时,如果不进行碰撞检测,遇到墙壁时传送点将会是墙壁正下方,角色传送过去会出现穿模的情况,所以要根据角色体型限制传送点与墙壁的间距。如果传送点是很狭小的空间,角色也应该设置碰撞检测,以避免穿模或其他bug。 设置方法:给手柄控制器增加VRTK_PlayAreaCursor组件,勾选Handle Play Area Cursor属性,设置Play Area Cursor Dimens属性(检测范围),并将此组件拖拽到光标指针组件的Playarea Cursor属性中。
忽略检测触发器在游戏中经常会出现一些透明物体用做事件触发(比如当玩家进入某个区域生成新的敌人),这些物体被称为触发器,由于触发器有自己的碰撞体,即便触发器是透明的但传送点依然会将此物体视为实体,并允许传送到物体的上方。这种情况是我们所不允许的,所以要进行忽略检测。 玩家区域碰撞检测忽略触发器前面讲到的玩家区域碰撞检测在遇到触发器时会出现无法传送的情况,需要进行玩家区域的碰撞忽略功能设置。 更多内容请查看总目录【Unity】Unity学习笔记目录整理 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/15 21:03:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |