目录

  • unity毕设之消防演练灭火功能的实现
    • **导入灭火器模型和喷射效果粒子系统**
    • **为被拾取的物体添加组件【VRTK_Interactable Object】组件:**
    • **为左右控制器添加可拾取物体的组件**
    • ***利用粒子碰撞实现灭火交互功能***
    • **基于VRTK下监听手柄按钮事件:**

unity毕设之消防演练灭火功能的实现

主要使用VRTK实现手柄拾取灭火器,然后扣下手柄扳机喷射粒子系统灭火的一个过程
主要学习了VRTK里面【021_Controller_CustomObjectsWithJoints】:该场景演示了如何抓取、使用带关节的可交互对象。
VRTK simulator使用说明:
所有的按键映射可以在SDK_InputSimulator中找到也可以修改成自己习惯的按键触发。

导入灭火器模型和喷射效果粒子系统

调整大小角度,查看喷射效果:

为被拾取的物体添加组件【VRTK_Interactable Object】组件:

点选被拾取的物体,依次点开选择菜单【Windows】—>【VRTK】—>【Setup Interactable Object】,在弹出的对话框,勾选Hold Button to Grab,点击下方setup selected object按钮,这样,灭火器就添加上了相关组件,使它能成为,Touch Hightlight color可设置被拾取时高亮的颜色。
为被拾取的物体添加刚体组件【Rigibody】和碰撞器(被拾取的必要条件)


至于添加什么碰撞器视物体的形状自行决定,调整碰撞器范围。

为左右控制器添加可拾取物体的组件

【VRTK_Interact Touch】(手柄可触摸物体)
【VRTK_Interact Grab】(手柄可抓取物体)
【VRTK_Controller Events】(前面以添加)

Grab Button设置拾取的按键,默认是手柄的侧键。
模拟器测试一下:按alt切换到右手模式下,移动位置到灭火器附近,按ctrl调整手柄上下高度,触摸到灭火器高亮

按住鼠标左键可拾取灭火器并可移动它:

利用粒子碰撞实现灭火交互功能

这里的灭火原理是:根据灭火器喷射粒子在一定时间内与火焰对象发生碰撞的累计次数更新火焰对象的灭火系数,用户喷得越准则灭火系数越大,只要灭火系数大于恢复系数,即可使火势变小。
这里提供一个思路:当灭火器喷射出的灭火粒子与火焰对象“fire”的碰撞器发生碰撞时,会触发粒子碰撞事件,可以在碰撞事件的回调函数中统计本次事件中与火焰对象发生碰撞的粒子数量,并将该数量传递给火焰对象的“fireControl”脚本,为此修改

为其添加接收粒子碰撞数量的函数,在该函数中根据一定时间内粒子碰撞累计数量计算出熄灭系数的最新值,同时,每隔一定时间清空粒子碰撞累计数和熄灭系数。
为fireControl类添加相关变量:

添加供发生粒子碰撞时可以调用的公开函数:

添加用于指定时间内清空粒子碰撞计数以及灭火系数的协程函数:

协程函数ResetPCC()放在start函数里启动。

创建粒子碰撞脚本类ParticleCollision并加载到喷射粒子对象上:

!!!(注意:需要将喷射粒子对象上的“ParticleSystem”组件中的“Type”设置为World,"Send Collison Message"属性设置为“true”(勾选状态)),因为是3d世界下,所有这是粒子碰撞触发的必要条件,不设置的话,粒子无法碰撞触发相关事件!!!

基于VRTK下监听手柄按钮事件:

新建脚本,基于VRTK的侧键按下,扳机键按下事件


挂载到右手柄上:

拖拽喷射粒子和喷射音效给组件。
好了,基本完成了,测试一下看:

模拟器状态下,键盘上按ctrl调整手柄位置触碰到灭火器,按鼠标左键拾取,鼠标右键发射灭火粒子,对准火势喷射即可灭火成功。

没有设备模拟器调试不好截图,但在控制台可以看到,粒子在不断发生碰撞,火势慢慢变小直至熄灭。
ok!

VR开发之使用VRTK实现拾取和手柄扣下扳机触发事件(Unity灭火器灭火功能的实现)相关推荐

  1. VR开发之使用VRTK实现基本的漫游和手柄射线功能

    unity毕设之使用VRTK实现手柄发射射线和漫游功能 目录导航 ***unity毕设之使用VRTK实现手柄发射射线和漫游功能*** ***[002-Pointers StraightPointer] ...

  2. 【Unity VR开发】结合VRTK4.0进行配置

    VR开发前奏: 之前进行VR开发都是用的VRTK3版本的,后来慢慢的公司unity版本的使用逐渐升级,而旧的版本无法与unity进行稳定性的兼容,这就导致了,导入包后会出现大量的报错问题,VRTK4. ...

  3. 如何在VR场景中位移与行走Unity VRTK - SteamVR Unity Toolkit针对VR开发的工具包

    Hello,我是KitStar. 以下文章整理的不对.还请见谅. 如果您碰到什么其他问题的话,欢迎来 我自己的一个 讨论群`559666429`来,大家一起找答案,共同进步 在使用HTC VIVE S ...

  4. 【Unity VR开发】VRTK 3.3.0 配置与基本使用

    VRTK3.3 开发日志 2021.11.16更新:半年前第一次接触VR开发,看B站Siki学院的视频做的笔记.今天整理一下,以供没接触过VR开发的人来学习.有些地方没有配图,但个人认为影响不大,按文 ...

  5. Unity VR开发VRTK中文图文教程大全-Chinar出品定期维护更新

    Chinar blog :www.chinar.xin Unity VR开发插件 VRTK 教程大全 本文提供全流程,中文翻译. Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无 ...

  6. 《Unity2018AR与VR开发快速上手》随书内容资源相关说明

    我的第二本书,<Unity2018AR与VR开发快速上手>终于上市了,现在天猫和京东都有卖. 随书资源的百度盘链接被关闭了,只给了个"此链接分享内容可能因为涉及侵权.色情.反动. ...

  7. 《Unity 2018 AR与VR开发快速上手》简介

    #好书推荐##好书奇遇季#<Unity 2018 AR与VR开发快速上手>,京东当当天猫都有发售. Unity3D是由Unity Technologies公司开发的一款跨平台的游戏行业软件 ...

  8. Unity Steam_VR 开发工具插件 VRTK自带案例分析(第一部分)

    转至https://www.cnblogs.com/zerotoinfinity/p/6474840.html VRTK这个工具包提供了很多在Unity3d做VR开发中通用的VR功能,主要包括 1)具 ...

  9. Unity Steam_VR开发工具插件---VRTK 自带案例分析

    DEMO 1  查询硬件手柄头显 在VRTK插件 的第一个demo   001_CameraRig_VR_PlayArea 案例 这个demo 显示的功能:  按下任一手柄上的按键,便载入下一个场景 ...

最新文章

  1. 对象----《你不知道的JS》
  2. GitHub 热榜:中国博士开发可交互全球疫情地图,登上柳叶刀!
  3. Transaction And Lock--锁相关基础
  4. 一个新手上课的路程!!!
  5. troubleshoot之:使用JFR分析性能问题
  6. 《Non-invasive Fetal ECG Signal Quality Assessment for Multichannel Heart Rate Estimation》论文解读-废弃
  7. #pragma 详解
  8. 人工智障学习笔记——机器学习(16)降维小结
  9. 通用职责分配软件原则之4-高内聚原则
  10. python中的map函数返回一个地址_python中的map函数
  11. 《Android Property
  12. java左移负数位_java的左移运算符和右移运算符
  13. 强烈推荐:创业起步 八种赢利模式
  14. 坐标轴范围及刻度的自适应算法
  15. 跑马灯广告语的实现过程,并且自定义marquee,解决焦点抢占问题.
  16. 蓝本(blueprint)
  17. 把Wordpress集成到zen-cart里方法 各种修改 经典机制
  18. MySQL(MariaDB):解决“ Host ‘*‘ is not allowed to connect to this MariaDB server”
  19. php开发gui有啥意义,gui是什么?
  20. 南京印象之出租车司机

热门文章

  1. AutoCAD的下载与安装
  2. 我曾经遇见过一个我最想照顾一生的女孩,后来……没有后来
  3. matlab 双馈,基于Matlab的双馈调速系统研究
  4. 关于企业上云,我们想跟你聊聊!|中机智库
  5. android ios通讯录权限设置,IOS 通讯录的访问和修改的实现
  6. 洛谷 P1144 最短路计数 dijkstra
  7. Luogu P1144 最短路计数
  8. ProFTPD部署教程
  9. cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)
  10. ASCII栅格的显示