首页 > 解决方案 > 检测到多个目标时播放声音。UNITY Vuforia

问题描述

目前我正在做一本 AR 有声读物,当扫描多个图像目标时,声音将为每个目标播放。我试图按照 Unity 和 vuforia 给出的教程进行操作,但仍然没有工作。你能帮帮我吗?

这个场景包含鸟和老虎。当图像鸟被扫描时,鸟的声音也会播放老虎。

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Vuforia;


public class ImageTargetPlayAudio : MonoBehaviour,
                                            ITrackableEventHandler
{
    private TrackableBehaviour mTrackableBehaviour;

    void Start()
    {
        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
        {
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
        }
    }

    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            // Play audio when target is found
            GetComponent<AudioSource>().Play();
        }
        else
        {
            // Stop audio when target is lost
            GetComponent<AudioSource>().Stop();
        }
    }
}

附上的图片是我的层次结构。 在此处输入图像描述

我将此代码添加到每个图像目标中。

如我错了请纠正我。

标签: unity3dvuforia

解决方案


如果您是 Vuforia 的新手,您将能够在 上更轻松地处理它GetComponentDefaultTrackableEventHandler该脚本包含OnTrackingLostOnTrackingFound已经工作的事件。

只需GetComponent为您的自定义脚本添加一个,如果没有null,则在该脚本上播放声音。


推荐阅读