当前位置: 首页 > news >正文

【Unity VR开发】结合VRTK4.0:将浮点数从交互器传递到可交互对象

语录:

     愿你熬得过万丈孤独,藏得下星辰大海。


前言:

        默认情况下,交互器只能将单个布尔操作传递给可交互对象,后者控制可交互对象上的抓取操作。在其他时候,交互器中的其他操作可能希望传递给可交互对象,例如另一个输入按钮按下,甚至是控制器的轴值,例如触发器挤压。

      我们可以使用 Interactions.ActionPublisherInteractions.ActionReceiver 来促进这种机制。


正文:

步骤一:

       首先,我们需要创建基本条件:CameraRigs.TrackedAlias(追踪器)、CameraRigs.UnityXR(头显)、Input.UnityInputManager.OpenVR.RightController(右手控制器)、Input.UnityInputManager.OpenVR.LeftController(左手控制器):

步骤二:

       我们需要在CameraRigs.TrackedAlias->Aliases->LeftControllerAlias(RightControllerAlias)下面创建Interactions.Interactor:

步骤三:

       我们需要给 Interactions.Interactor指定对应的Grad Action和Velocity Tracker:

 步骤四:

        我们需要在CameraRigs.TrackedAlias->Aliases->LeftControllerAlias(RightControllerAlias)下面创建Interactions.ActionPublisher

步骤五:

        我们需要给 Interactions.ActionPublisher指定对应的Source Action和Source Interactor:

 步骤六:

        创建一个Cube作为放置台,再创建一个可抓取的物体:

步骤七: 

        创建可移动模块然后进行对应属性配置:

步骤八:

       创建 Interactions.ActionReceiver,然后将Interactions.Interactable拖放到它的属性上面:

步骤九:

将前面创建的两个Interactions.ActionPublisher拖放到Interactions.ActionReceiver中:

 步骤十:

         创建一个脚本,允许我们更改可交互游戏对象的不透明度,以测试触发器值是否从控制器传递到可交互对象。

using UnityEngine;public class OpacityChanger : MonoBehaviour
{public GameObject meshToChange;protected MeshRenderer materialRenderer;protected void OnEnable(){materialRenderer = meshToChange.GetComponentInChildren<MeshRenderer>();}public void ChangeOpacity(float value){Color currentColor = materialRenderer.material.color;currentColor.a = 1f - value;materialRenderer.material.color = currentColor;}
}

步骤十一:

        然后将脚本挂到Interactions.Interactable上面,并把Interactions.Interactable下面的子物体Cube拖放到脚本中:

 步骤十二:

     找到   Interactions.ActionReceiver 下面的FloatAction物体 ,将Interactions.Interactable拖放到Value Changed下面:

  步骤十三:

          找到Interactions.Interactable下面的Cube,然后将Cube添加一个材质,并将材质的Rendering Mode 属性改为Transparent:

 Play:

运行Unity 场景时,可以用 VR 控制器上的握把按钮抓取立方体,然后按下 VR 控制器上的触发按钮会慢慢改变可交互立方体游戏对象的不透明度。


 

 

http://www.lryc.cn/news/9787.html

相关文章:

  • 【图像分类】基于PyTorch搭建卷积神经网络实现MNIST手写数字识别(附项目完整代码)
  • 4.4 MQC
  • ClickHouse列存储(十一)—— ClickHouse
  • 公司来了个卷王,真让人奔溃
  • 什么是refresh?Spring refresh 流程
  • Python登陆系统
  • 【新2023】华为OD机试 - 重组字符串(Python)
  • 视频监控流程图
  • 普通单双面板的生产工艺流程之图形转移,华秋一文告诉你
  • 1.8 providers
  • 如何编写一个基本的 Verilog Module(模块)
  • 让乔布斯想要「发动核战争」的 Android,为何成了占有率最高的系统?
  • FPGA开发软件(vivado + modelsim)环境搭建(附详细安装步骤+软件下载)
  • TypeScript 学习之类型
  • 基于MATLAB计算MIMO信道容量(附完整代码与分析)
  • CSDN城市开发者联盟、C友会期待你的加入
  • 【新2023】华为OD机试 - 吃火锅(Python)
  • 类似LeetCode的登录页面(小程序版)
  • CUDA的统一内存
  • MySQL-其他函数(补充)
  • MySQL Study Notes Design in 2023
  • C++ 修改防火墙firewall设置(Windows)
  • Spring 入门教程详解
  • day43【代码随想录】动态规划之一和零、完全背包理论基础
  • GEE学习笔记 七十八:干涸的洪泽湖
  • 双指针【灵神基础精讲】
  • tushare量化数据库模块怎么分析?
  • 模型转换 PyTorch转ONNX 入门
  • 【深度学习】激活函数
  • 【新2023】华为OD机试 - 数字的排列(Python)