即使在Unity vuforia中失去目标后仍要播放视频?

时间:2018-08-16 18:20:56

标签: unity3d augmented-reality vuforia

我有一个要求,当找到目标图像时,应播放视频。现在,当目标图像丢失时,视频仍然可以播放。 在这种情况下,我认为我必须将视频附加到AR Camera上,并且当找到目标图像时,应该将其激活并播放。但是我很困惑。什么是解决此问题的最佳方法。

我尝试过的事情: 我从“图像目标”中分离了那些四边形(正在播放视频的内部),并将它们放置在相机的前面(我有两个图像目标)。现在在DefaultTrackableEventHandler里面添加了两个GameObject

public GameObject Quad1;
public GameObject Quad;

现在在Start方法中,我正在这样做:

Quad = GameObject.Find("Quad");
Quad1 = GameObject.Find("Quad1");
Quad.SetActive(false);
Quad1.SetActive(false);

现在在OnTrackingFound方法中,我添加了以下内容:

if (mTrackableBehaviour.TrackableName == "myImage1")
{
     Quad.SetActive(true);
     playSound("sounds/maiplayback");
}
if(mTrackableBehaviour.TrackableName == "myImage2")
{
     Quad1.SetActive(true);
     playSound("sounds/mainplayback2");
}    

还有OnTrackingLost中的相同代码,因为即使目标丢失,我们也必须播放视频。 但是当我这样做时,视频会在相机开启时开始播放。我被卡住了。请给我建议。任何帮助将非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

每次场景加载时,Vuforia都会调用Trackable Lost,也许这就是问题所在。

我要修改这样的行为,是将DefaultTrackableBehaviour中的事件调用添加到其他脚本中的函数中。

在这种情况下,我会在OnTrackableFound上添加对使视频对象出现或开始播放的函数的调用,就像我认为的那样,应将视频附加到ARCamera。

当您开始播放视频时,请激活一个标志,这样当再次跟踪目标时,它就不会与视频发生异常行为。然后您可以按自己的意愿停止它。

这样的事情。

bool playing = false;

public void PlayVideo ()
{
    if (!playing)
    {
        playing = true;

        Quad1.SetActive (true);
        playSound ("sounds/mainplayback2");
    }
}

public void StopVideo ()
{
    if (playing)
    {
        playing = false;

        Quad1.SetActive (false);
        stopSound ();
    }
}

在最坏的情况下,请再连接一台带有视频对象的摄像机,这样Vuforia不会破坏您的视频行为,您可以随意关闭它。