【问题标题】:Sound play when multiple target detected. UNITY Vuforia检测到多个目标时播放声音。 UNITY Vuforia
【发布时间】:2019-02-26 12:54:08
【问题描述】:

目前我正在制作一本 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();
        }
    }
}

附上的图片是我的层次结构。

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

如果我错了,请纠正我。

【问题讨论】:

    标签: unity3d vuforia


    【解决方案1】:

    RegisterTrackableEventHandler的文档

    此方法在 Tracker 上注册一个新的 Tracker 事件处理程序。 一旦所有 Trackables 被更新,这些处理程序就会被调用 在这个框架中。

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

    【讨论】:

    • 对不起,我不明白。我在 vuforia unity 中很安静。能简单解释一下吗?
    • 这些处理程序会在所有 Trackables 更新后立即调用,这很难理解吗?
    • RegisterTrackableEventHandler 适用于所有可追踪对象
    【解决方案2】:

    如果您是 Vuforia 新手,您可以使用 DefaultTrackableEventHandler 上的 GetComponent 更轻松地处理它,该脚本包含已运行的 OnTrackingLostOnTrackingFound 事件。

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

    【讨论】:

    • 是否只是在 DefaultTrackableEventHandler 中添加脚本?我不知道在哪里添加。我尝试添加但脚本错误:(
    • 该脚本 (DefaultTrackableEventHandler) 附加到 Vuforia 的每个图像(请附上您的 ImageTarget 游戏对象的屏幕截图),您可以在其中执行类似操作。 GetComponentInChildren&lt;MyScrypt&gt;().TriggerSomething();OnTrackingFoundOnTrackingLost 事件上执行此操作,您就有了自定义行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多