VRTK4.0学习(三):Unity Axis Action

前言

当定义的输入轴更改值时,Unity Axis Actions绑定到Unity Input Manager中并发出事件。
有两种Unity轴动作:
Unity 1D Axis(Unity 1D轴):侦听单个轴上的更改,并为该轴更改发出浮点值。
Unity 2D Axis:侦听两个轴上的更改,并发出将两个轴更改组合在一起的Vector2值。
Unity轴动作源自Zinnia.Unity动作,因此可以注入需要变化浮点数据(例如触摸板移动)的任何VRTK预制件中。
VRTK将在首次加载Unity项目时通过弹出窗口询问是否尝试自动创建一些Unity轴输入映射。如果接受此设置,则将创建左右控制器触摸板,侧握键和扳机键的默认轴数据。

第1步

通过选择Main Menu -> Project Settings,然后从Project Settings窗口的左侧列表中Input进行选择,使用一些定义的轴数据来设置Unity Input Manager 。
如有必要,展开折叠的项目,并为所需的每个轴创建其他轴。有关轴映射,请参考Unity XR输入文档
现在,让我们创建一个名为的新轴VRTK_Axis10_RightTrigger,该轴将使我们能够在正确的控制器的触发点上拾取轴的变化。
在这里插入图片描述
在这里插入图片描述

第2步

创建一个新的Unity 3D Sphere对象,Main Menu -> GameObject -> 3D Object -> Sphere,以便我们可以测试Unity Axis Action。
在Unity Project中创建一个材质球l将其Rendering Mode 更改为Transparent,命名为Transparent。
在这里插入图片描述
然后将这个新创建材质球应用于Sphere物体。我们将使用此材质基于轴的值更改Sphere的不透明度。

第3步

在Unity Axis 1D Action和Unity Axis 2D Action组件具有可以挂到4个事件:
激活状态已更改:当操作的激活状态从上一个状态更改时,发出此消息。
已激活:当轴值不再是默认值时发出。
值更改:轴值更改时发出。
禁用:当轴值返回到设置的默认值时发射。
让我们创建一个Unity Axis 1D Action组件来跟踪右手控制器扳机键的按下,并且按下扳机键将控制Sphere 物体的不透明度。
在Unity层次结构中创建一个空的GameObject,然后单击Add Component按钮并选择Unity 1D Axis Action组件。
在Unity 1D Axis Action组件的Axis Name参数中,输入VRTK_Axis10_RightTrigger作为值。这是我们与Unity Input Manager定义的右控制器触发轴关联的预定义名称。
在这里插入图片描述
现在,我们有一个Unity Axis Action,用于跟踪右侧控制器触发轴的值。

第4步

我们需要一个脚本,该脚本允许我们更改Sphere物体的材质的不透明度。创建一个新Script名称并命名OpacityChanger。
将以下代码复制到该新创建的OpacityChanger脚本中:

using UnityEngine;
public class OpacityChanger : MonoBehaviour
{
    public Material target;
    public void UpdateOpacity(float alphaValue)
    {
        Color color = target.color;
        color.a = alphaValue;
        target.color = color;
    }
}

这个脚本具有一个Public参数,该参数允许我们将材质指定为更改Alpha的目标,并且可以从事件中调用一个public方法,同时传递一个float值以确定该材质的不透明度Alpha值。
将OpacityChanger组件添加带有Unity 1D Axis Action组件的GameObject上,然后将创建Transparent材质球拖放到OpacityChanger组件的Target参数中。
在这里插入图片描述

第5步

现在设置Unity 1D Axis Action组件,以在按下和按下触发器时更改材料的不透明度。
单击Unity 1D Axis Action组件中Value Changed事件参数右下角的+符号,然后将组件拖放到出现并显示的框中。
选择一个Function在Value Changed事件发出时执行。对于此示例,请选择OpacityChanger -> UpdateOpacity(一定要Dynamic float - UpdateOpacity为此示例选择)。
在这里插入图片描述

结语

播放Unity场景并逐渐挤压并释放右手控制器上的扳机键,并且挤压触发器力度越大,Sphere 的不透明度将变得越不透明。
这是因为当不触摸扳机键时,扳机键的轴值将为0,而当扳机键完全被压入时,轴值将为1。扳机键轴值可以是介于0或之间的任何值,并取决于施加到扳机上的压力大小。然后将此轴值传递到材质颜色的Alpha通道中,而值1将会表示材质完全不透明,而值0将会表示材质完全透明。
在这里插入图片描述
其他:Unity 2D Axis设置操作与Unity 1D Axis类似。

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值