HTC VIEW丨14. 使用激光指针与物体交互:一直显示激光——(VR交互机制3-Use)
Use两种实现方式:
1、使用手柄点击,按下Trigger键触发
2、使用激光指针悬停在物体上,按下Trigger键
2019.06.26更新:
写了一套逻辑,只要勾选isHTC,自动帮你把UI从PC版转成VR版。取消勾选,程序回到PC版。
例子:实现手柄射线与物体的交互
1、VRTK的初步设置
2、给要捡起的cube进行配置(2-4完成射线触碰物体变色,实现选中状态)(5也要做第4步)(红色必做!)
3、给手柄控制器进行配置,完成射线选中效果。
a、添加VRTK_Interact Use
b、勾选VRTK_Pointer的Interact With Object。实现射线与物体的交互,可出现选中效果。
若不勾选,则只实现手柄触碰到之后才交互。
4、添加VRTK_InteractUse_UnityEvents
5、给要交互的物体添加Collider,挂载自己定义的事件的新脚本
注意:因为4步以前我们添加了射线击中变黄事件,自动添加了VRTK_InteractableObject组件,而我们下面方法继承了VRTK_InteractableObject该组件,因此一定要先删除原先添加的组件!
我们也可删掉通过自动配置自动添加的组件,直接添加我们写的代码,这一个脚本也能实现功能!
- using UnityEngine;
- using UnityEngine.UI;
- using VRTK;
- public class Skode_BtnSelect : VRTK_InteractableObject
- {
- // 开始使用:默认扣动扳机键
- public override void StartUsing(GameObject currentUsingObject)
- {
- base.StartUsing(currentUsingObject);
- #region 自定义
- var value = GetComponent<Button>().onClick;
- if (value != null)
- {
- value.Invoke();
- }
- #endregion
- }
- // 停止使用:默认松开扳机键
- public override void StopUsing(GameObject previousUsingObject)
- {
- base.StopUsing(previousUsingObject);
- #region 自定义
- #endregion
- }
- }
Hold Button To Use:如果勾选,控制器上的使用(use)按钮需要被持续按下来保持使用/(“需要长时间按下,来触发Use事件”——来自某牛)
Use Only if Grabbed:当被抓取的时候,属性才能被使用
Pointer Activates Use Action:(“只要激光击中物体,不需要Trigger的按下,就是可以使用的。不勾选,则只有按下时,才可激活Use事件”——来自某牛)/(勾选该选项,不勾选Hold Button To Use,当指针在对象上的时候就会运行对象的StartUsing方法)
关于横线删除:网上博客都说的是删除文字内容,但我实际测试结果是:
1、同时勾选HoldButtonToUse和PointerActivatesUseAction,只要当激光射线第一次指到该物体时,立刻触发且仅触发一次use事件,不需长按,没有重复触发。
2、只勾选HoldButtonToUse,并不需要长按Trigger,还是只要按下就触发
希望有了解的朋友确认问题。
需要注意的是:右手手柄按下扳机键点击物体想触发Use事件,要在此时关闭瞬移效果
原先:右手手柄按下圆盘键激光击中物体,按下扳机键,触发Use事件。当松开圆盘键时,还会传送到物体位置
希望:松开圆盘键后,不要传送到物体位置。
关闭方法0:
设置传送限制规则。
关闭方法1:
右手手柄VRTK_InteractUse_UnityEvents——Toggle为false
激光与UI的交互:
单纯实现与UI Collider的交互,直接用上面的“与物体的交互”就OK了,但要实现UI Scroll View的滑动效果,则还要:
1、先完成与物体交互手柄的操作步骤,UI上可不添加Interactable
2、在想要交互的手柄上,比如RightController,添加VRTK_UIPointer、VRTK_ControllerUIPointerEvents_ListenerExample脚本。
3、在想要交互的Canvas上挂载VRTK_UICanvas组件
这时我们会发现我们虽然能实现效果,但是射线穿透UI了。这是因为虽然VRTK_UICanvas在Canvas上自动生成了Boxcollider,但是我们Canvas里面的内容不和Canvas在一个平面。这导致射线检测不到碰撞器,穿透了。所以我们:
要不然就把下面的物体放在和Canvas同一个平面上;
要不然注释掉给canvas添加collider的代码,自己给不同位置的UI添加collider。
激光指针抓取物体
实现效果:按下圆盘键触发激光,按下Grab键将物体吸附在激光顶端。(不勾选,使用Use方法抓取物体,是使用的Trigger键)
注意:你要用自己继承了VRTK_InteractableObject的脚本,记得配置如下选项(用VRTK配置生成的则自动配置好了)
1、勾选右手VRTK_Pointer——GrabToPointerTip
2、去掉要抓取物体的右手吸附点。
若是设置了吸附点,则不会吸附在射线顶端,而是实现吸附点的抓取。
VR让射线一直显示的方法
http://www.taodudu.cc/news/show-3511960.html
相关文章:
- CoCube群机器人预览→资讯剧透←
- bulter机器人_九款最牛的物流机器人:中国曹操亮了
- bulter机器人_盘点国内外受欢迎的九款物流机器人
- bulter机器人_盘点:九款物流机器人
- bulter机器人_浅谈国内外9大智能物流机器人
- 庖丁解牛-亚马逊KIVA硬件拆解
- 我和一个投资人聊了聊公有云的资本情况,太无趣了
- 为什么在开曼群岛注册公司?
- 清华姚期智最新演讲:为什么现在是金融科技的“新”黄金时代
- 图灵在布莱切利园的女朋友_前亚马逊副总裁蒂姆·布莱伊为什么离开了
- 人工智能为什么这么火?看看安防江湖30年血战就知道了
- 22岁的我为什么辞去了年薪150万的工作?值得深思
- 就在刚刚,UCloud 宣布获得中移资本战略投资!
- 我为什么在22岁辞去年薪150万的工作
- 基金合作保密协议
- 仿神庙逃亡
- 解密神庙逃亡类跑酷游戏地图无限的原因
- pygame 神庙逃亡
- android动态视力测试,android《神庙逃亡》轻松通关技巧全攻略
- 【Unity3D】模仿制作“神庙逃亡”吃金币后金币飞出屏幕效果
- 周赛题目 福州 神庙逃亡
- Unity3D之神庙逃亡路移动效果
- Problem 2121 神庙逃亡(FZU)
- WP8手机安装《神庙逃亡》的教程
- 安卓游戏《神庙逃亡2》之技术流高手进阶技巧
- A - 神庙逃亡
- FZU - 2121 - 神庙逃亡
- 神庙逃亡——单纯的物理题
- 神庙逃亡破解分析
- html实现神墓逃亡小游戏(自适应)
HTC VIEW丨14. 使用激光指针与物体交互:一直显示激光——(VR交互机制3-Use)相关推荐
- HTC VIVE丨11. 使用VRTK实现与物体的交互
要点 1.可实现的效果:攀爬.双手持握.缩放物体等 2.VRTK中与物体交互的三种类型:Touch.Grab.Use Touch:手柄悬停在物体上面,跟物体进行碰撞或接触 Grab:按动某一定义的按键 ...
- 利用unity和steamVR完成场景漫游(四) 利用VRTK实现激光指针
简单激光指针(VRTK_ SimplePointer) 简单指针(Simple Pointer)脚本从控制器尾部发出一个有色光束来模拟激光束.这在场景中指向对象很有用,它能判断所指向的对象以及对象距控 ...
- HTC View 手柄操作简介
核心类简介: SteamVR_TrackedObject 此类用于根据硬件设备,并为硬件设备分配相应的索引 SteamVR_Controller.Device 最重要的类,封装了跟踪设备的全部信息,例 ...
- Ubuntu 14.04系统托盘图标问题,skype托盘图标显示
Ubuntu 14.04系统托盘图标问题,skype托盘图标显示_瑞波支付_新浪博客 Ubuntu 14.04 取消了系统托盘白名单机制,导致使用传统系统托盘技术的程序无法显示出托盘图标,dconf- ...
- [激光原理与应用-25]:《激光原理与技术》-11- 激光产生技术-非线性技术之激光倍频、非线性晶体CLBO、BBO、LBO
目录 第1章 什么是激光倍频 1.1 什么是激光倍频 1.2 激光倍频的好处 第2章 激光倍频的基本原理 2.1 基本原理 2.2 倍频的条件 2.3 分类 第3章 倍频晶体 3.1 BBO,LBO晶 ...
- [激光原理与应用-26]:《激光原理与技术》-12- 激光产生技术-短脉冲、超短脉冲、调Q技术、锁模技术
目录 第1章 什么是激光脉冲 1.1 什么是激光脉冲(时间+能量维度) 1.2 激光脉冲的好处 1.3 巨脉冲激光(能量维度) 1.4 什么是激光短脉冲与超短脉冲激光(时间维度) 1.5 长脉冲宽度缺 ...
- [激光原理与应用-21]:《激光原理与技术》-7- 激光技术大汇总与总体概述
目录 前言: 第1章 什么是激光技术 1.1 什么是激光技术 1.2 激光技术的分类方法 第2章 激光的应用技术 2.1 激光加工技术 2.2 激光快速成型 2.3 激光切割 2.4 激光焊接 2.5 ...
- 基于unity+HTC VIVE的室内漫游交互(教你如何“无代码”VR交互)
简单粗暴,一个插件让你无代码实现VR交互 开发环境steamVR2.0+unity2017.1.0f1 steamVR2.0下载地址 一.总体目标 Unity+HTC VIVE 开发: 1.场景漫游+ ...
- [激光原理与应用-22]:《激光原理与技术》-8- 激光产生技术-选模技术:横模、纵模
目录 第1章 什么是激光的模式 1.1 激光的特性参数 1.2 激光的"模" 1.3 选模 第2章 纵模 2.1 什么是纵模 2.2 纵模的决定因素 2.3 单纵模的选模方法 第3 ...
最新文章
- 【Ethereum】以太坊ERC20 Token标准完整说明
- eureka对比Zookeeper:
- 素数与线性筛选法初级版
- 检测输入路径是否存在错误_为什么存在用户输入错误
- Ubuntu下将Sublime Text设置为默认编辑器
- 爬虫项目三:爬取选课信息
- c语言 信号函数,C语言中进程信号集的相关操作函数详解
- node.js中net网络模块TCP服务端与客户端的使用
- Python安装详细步骤
- 安卓使用MediaPlayer播放RTSP无画面的解决办法
- SUMO地图中添加交通流
- automation 服务器不能创建对象
- 语音识别使用推荐(讯飞、百度、腾讯、云知声等)
- 熟知四种常见的BIOS信息说明【7gyy】
- R语言——ggplot2的绘图逻辑
- ubuntu快捷键备忘
- ICPC 2018 焦作 C题 Supreme Command
- pop php,什么是POP
- python 提取列表中长度大于3的字符串,列表中什么元素都有
- C++ Boost库:简介和第一个示例程序