VRTK4.0学习(五):将Float Action转换为Boolean Action

前言

有时你可能想要使用Float Action中的值来激活或停用输出类型。例如,在控制器上完全按下扳机键按钮时,扳机键按钮轴会导致输出。
Unity Axis Actions提供了一种从轴获取变化值数据的方法,但实际上并没有提供一种让我们在该值达到特定值时触发某些内容的方法。这可以通过获取float值并将其转换为布尔值(当float值在我们指定的范围内时)来完成。然后,我们可以使用此布尔值并将其传递给Boolean Action以执行打开或关闭(真/假)的事件。
我们可以使用Zinnia.Unity随附的数据类型转换器来执行此操作,该转换器允许从一种数据类型转换为另一种数据类型。

第1步

通过选择Main Menu -> GameObject -> Create Empty创建一个空物体,重命名为RightTriggerPressed,然后单击Add Component按钮并选择Float To Boolean组件。
在这里插入图片描述

第2步

单击“ Unity Hierarchy”窗口中的带有Unity Axis 1D Action组件的GameObject物体,然后将RightTriggerPressed物体拖放到Unity 1D Axis Action组件Value Changed事件参数中。
注意:这将覆盖旧的事件侦听器。如果Value Changed事件参数中没有事件侦听器,请单击Unity 1D Axis Action组件上Value Changed事件参数右下角的+符号以添加新的事件侦听器。
在Value Changed事件选择一个Function。对于此示例,请选择FloatToBoolean -> DoTransform(一定要Dynamic float - DoTransform为此示例选择)。
在这里插入图片描述
现在Unity 1D Axis Action组件Value Changed事件监听器将当前轴值随时转换为布尔轴值变化。

第3步

让我们添加一些值边界,例如何时应该将float值视为真正的布尔值。由于轴值标准化,我们只需要值的范围内设置在0f和1f。在我们的示例中,我们正在监听Right Controller上的Trigger轴,该轴的最小值0f(即完全没有按下)和最大值1f(即完全按下)。例如,值为0.5f表示触发器已被按下,但按钮并未完全按下,而是保持在一半左右。
在Unity Hierarchy窗口中单击RightTriggerPressed物体,然后在Float To Boolean组件设置Positive Bounds参数。此Positive Bounds参数有两个字段,用于定义下限和上限。落在这些范围内的任何浮点值都将被视为正值(即,真正的布尔值)。
对于我们的示例,让我们使“触发”轴必须至少一直压缩到完全挤压的方式的75%,因此在Positive Bounds参数的第一个字段中输入0.75f,第二个字段保留为1f。

在这里插入图片描述

第4步

现在,让我们连接Float To Boolean组件以控制Boolean Action。
单击RightTriggerPressed物体上的Add Component按钮,然后选择Boolean Action组件。
单击组件中事件参数右下角的+符号,然后将组件拖放到出现并显示的框中。
选择一个Function在Transformed事件发出时执行。选择BooleanAction -> Receive(请确保Dynamic bool - Receive为此示例选择)。
每当触发器轴发生变化并落入我们设置的正边界之内或之外时,这将更新Boolean Action为true或false。
在这里插入图片描述

结语

现在,您将拥有一个Boolean Action,在触发轴至少挤压75%时为true并且在不再被挤压时为false。它也可以用于驱动其他输出事件,例如抓取一个物体甚至激活一个指针。

注:本文内容引用自VRTK学院。用于自己学习笔记,文章如有描述不当的地方,也欢迎各位朋友在评论处留言指正,感谢大家支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值