2017-06-22 117 views
0

我已经使用Unity和Vuforia构建了AR应用程序。所以基本上,当我扫描一些我看到一个模型。我已经移除了主摄像头,我们正在使用AR摄像头来达到此目的。使用Vuforia在AR应用程序中检测Unity中导入的3D模型的触摸

现在运行在手机上的apk 我想打开一个网址或显示一些消息触摸扫描图像后的3D模型。

我知道它使用Raycasting,但可以帮助我打开一个URL点击3D模型的代码片段将有所帮助。我是Unity的初学者,所以我会很感激这个帮助。

回答

1

您的模型需要附加碰撞器才能使射线注册碰撞。此外,使用标签过滤掉光线播放结果也很方便。尽管你可以使用图层蒙版来达到同样的目的。 Input.touches在上一帧返回所有注册触摸的数组,假设只有一个触摸已注册,但是如果您想要,您可以遍历所有触摸以防万一有多个触摸,并检查它们中的任何一个是否碰到模型。然后,你可以做这样的事情:

public void RegisterModelTouch() 
    { 
     // We assume that there was only one touch and take the first 
     // element in the array. 
     Touch touch = Input.touches[0]; 
     RaycastHit hit; 
     Ray ray = Camera.main.ScreenPointToRay(touch.position); 
     if (Physics.Raycast(ray, out hit)) 
     { 
      if (hit.collider.CompareTag("YourModelTag")) 
      { 
       // Do something (open an URL in your case). 
      }     
     } 
    } 

希望这会有所帮助。

+0

对于这样简单的问题感到抱歉。我怎么才能知道YourModelTag。你能帮忙吗? 也可以让我知道,因为没有主摄像头,因为我已经删除它,我使用AR摄像头,所以Camera.main将工作。 等待您的宝贵意见 –

+0

您可以创建自己的标签,然后将它们分配给游戏对象,我只是以“YourModelTag”为例。请查看此[页面](https://docs.unity3d.com/Manual/Tags.html)以获得深入解释。对于相机,Camera.main将返回标记为场景的任何相机:MainCamera。所以,只需为AR摄像机选择该标签即可。 – Marko

+0

我们必须将此脚本添加到AR相机和3d模型中,或者仅添加到3d模型中 –

相关问题