Unity的XR开发之手柄自定义震动

使用新版本的Unity后,VR开发工具换了一遍,插件也转换为了XRTookit,一直想自定义手柄的震动,查了不少Unity的XR api,并参考 Valem Tutorials 的代码。如下:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.XR.Interaction.Toolkit;
[System.Serializable]
public class Haptic
{
    
    
    [Range(0, 1)]
    public float instensity;
    public float duration;
    public void TriggerHaptic(BaseInteractionEventArgs eventArgs)
    {
    
    
        if (eventArgs.interactableObject is XRBaseControllerInteractor controllerInteractor)
        {
    
    
            TriggerHaptic(controllerInteractor.xrController);
        }
    }
    public void TriggerHaptic(XRBaseController controller)
    {
    
    
        if (instensity > 0)
            controller.SendHapticImpulse(instensity, duration);
    }
}
/// <summary>
/// 挂载在物体上的,物体上还需要XRGrabInteractable.cs
/// </summary>
public class HapticInteractable : MonoBehaviour
{
    
    
    public Haptic hapticOnActivated;
    public Haptic hapticHoverEntered;
    public Haptic hapticHoverExited;
    public Haptic hapticSelectEntered;
    public Haptic hapticSelectExited;
    void Start()
    {
    
    
        XRBaseInteractable interactable = GetComponent<XRBaseInteractable>();
        interactable.activated.AddListener(hapticOnActivated.TriggerHaptic);
        interactable.hoverEntered.AddListener(hapticHoverEntered.TriggerHaptic);
        interactable.hoverExited.AddListener(hapticHoverExited.TriggerHaptic);
        interactable.selectEntered.AddListener(hapticSelectEntered.TriggerHaptic);
        interactable.selectExited.AddListener(hapticSelectExited.TriggerHaptic);
    }
}

猜你喜欢

转载自blog.csdn.net/kuilaurence/article/details/129496487