检测到多个目标时发出声音。 UNITY Vuforia

问题描述 投票:1回答:2

目前我正在做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();
        }
    }
}

附加的图像是我的层次结构。 enter image description here

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

如我错了请纠正我。

unity3d vuforia
2个回答
1
投票

RegisterTrackableEventHandler的文件

此方法在Tracker中注册一个新的Tracker事件处理程序。只要在此框架中更新了所有可跟踪文件,就会调用这些处理程序。

所以你使用错误的方法,检查document,也许OnTrackerUpdate是合适的。


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.