当前,我正在制作一本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();
}
}
}
我将此代码添加到每个图像目标中。
如果我做错了,请纠正我。
答案 0 :(得分:1)
RegisterTrackableEventHandler
的文档
此方法在跟踪器上注册一个新的跟踪器事件处理程序。 所有可追踪对象更新后,就会立即调用这些处理程序 在这个框架中。
因此您使用了错误的方法,请检查document,也许OnTrackerUpdate
是合适的。
答案 1 :(得分:1)
如果您不熟悉Vuforia,则可以在GetComponent
上使用DefaultTrackableEventHandler
来更轻松地处理它,该脚本包含已经运行的OnTrackingLost
和OnTrackingFound
事件。
只需为您的自定义脚本添加一个GetComponent
,如果没有null
,请在该脚本上播放声音。