前言
当定义的输入轴更改值时,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学院。用于自己学习笔记,文章如有描述不当的地方,也欢迎各位朋友在评论处留言指正,感谢大家支持。