想在unity xr 实现点击不同弦播放对应的音频,是否抓取乐器无所谓,之前有尝试过简单的只要点击就播放音频,但我也不知道为什么只用audioSource.Play()不行,但抓取后使用ActivateEventArgs,audioSource.Play()可以运行。有点懵。下面的代码是把搜索的unity 3d代码更改添加了ActivateEventArgs部分,但也还是不能播放音频。应该要怎么改,可以提供点思路吗,提前先谢谢。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
public class Music : MonoBehaviour
{
public AudioClip[] stringAudioClips;
private AudioSource audioSource;
public Transform[] stringTransforms;
private void Start()
{
audioSource = GetComponent<AudioSource>();
XRGrabInteractable grabbable = GetComponent<XRGrabInteractable>();
grabbable.activated.AddListener(Playing);
}
private void Playing(ActivateEventArgs arg)
{
int stringIndex = GetClickedStringIndex();
if (stringIndex >= 0 && stringIndex < stringAudioClips.Length)
{
audioSource.clip = stringAudioClips[stringIndex];
audioSource.Play();
}
}
private int GetClickedStringIndex()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.CompareTag("String"))
{
for (int i = 0; i < stringTransforms.Length; i++)
{
if (hit.transform == stringTransforms[i])
{
return i;
}
}
}
}
return -1;
}
}