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

文章介绍了如何在Unity中使用Interactions库,通过ActionPublisher和ActionReceiver组件实现复杂的交互逻辑。步骤包括设置追踪器、控制器、Interactor和Interactable,以及创建ActionPublisher和ActionReceiver来传递控制器的事件,如触发器值变化,从而影响游戏对象的不透明度,提供更丰富的VR交互体验。
摘要由CSDN通过智能技术生成

语录:

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


前言:

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

      我们可以使用 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 控制器上的触发按钮会慢慢改变可交互立方体游戏对象的不透明度。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值