Android 如何使用Unity3d计算现实世界中AR摄像机到标记的距离

Android 如何使用Unity3d计算现实世界中AR摄像机到标记的距离,android,camera,unity3d,distance,unityscript,Android,Camera,Unity3d,Distance,Unityscript,我不熟悉脚本编写,我正努力在Unity3d中为Android手机制作AR应用程序。我遇到了一个问题,不管我怎么想都解决不了 情况是这样的。我有一个AR摄像机,脚本中有NyARToolkit插件,用于Unity3d增强现实 当达到一定距离时,需要关闭标记为MainCamera的AR摄像头,这意味着将android手机从在其上渲染模型的标记上移开。 当达到这个距离时,我想启动主摄像头并加载另一个unity场景 下面的代码是我迄今为止尝试过的代码,但没有太大成功。需要提到的是,这个脚本是附加在Main

我不熟悉脚本编写,我正努力在Unity3d中为Android手机制作AR应用程序。我遇到了一个问题,不管我怎么想都解决不了

情况是这样的。我有一个AR摄像机,脚本中有NyARToolkit插件,用于Unity3d增强现实

当达到一定距离时,需要关闭标记为MainCamera的AR摄像头,这意味着将android手机从在其上渲染模型的标记上移开。 当达到这个距离时,我想启动主摄像头并加载另一个unity场景

下面的代码是我迄今为止尝试过的代码,但没有太大成功。需要提到的是,这个脚本是附加在MainCamera上的,这是需要禁用的游戏对象

以下是脚本:

#pragma strict
 var mainCamera : Transform;
 var camera : GameObject;
 function Update() {
 var distance = Vector3.Distance(mainCamera.position, transform.position);
 if(distance<0) {
     Debug.Log("CloseUp camera is on : " + distance);
 }
  if(distance > 1) {
    Debug.Log("CloseUp camera is off : " + distance);
     Camera.main.gameObject.SetActiveRecursively(false);
   }
}
有人能看一下我的代码片段并发布一个有效的编辑,这样当用户将android手机从标记上移开时,我就可以获得正确的距离并关闭相机吗

提前感谢大家的回答

编辑1


我知道我甚至还不了解在移动设备上工作所需的功能,但这将让您了解该功能。我需要首先获得从标记到移动设备的距离,如果该距离超过1.5米,则应关闭AR摄像头并加载新的标高

你没有提到什么不起作用。根据我从你的帖子和你提供的代码示例中拼凑出的内容,你只需要添加级别加载代码

#pragma strict
var mainCamera : Transform;
var camera : GameObject;
function Update() {
var distance = Vector3.Distance(mainCamera.position, transform.position);
if(distance<0) {
   Debug.Log("CloseUp camera is on : " + distance);
}
if(distance > 1) {
  Debug.Log("CloseUp camera is off : " + distance);
  // If you are loading a new scene you likely don't need to bother turning off the camera
  Camera.main.gameObject.SetActiveRecursively(false);
  Application.LoadLevel ("nameOfTheLevelToLoad");
}
}

这是我使用的代码

float DistanceMainCamPosSpawnedPrefab = 
Vector3.Distance(MainCam.transform.position, 
m_SpawnedOnePrefab.transform.position); // the m_SpawnedOnePrefab would be your marker


if (DistanceMainCamPosSpawnedPrefab > .3f && DistanceMainCamPosSpawnedPrefab <  
.5f)
   {
      // run your code here
    }

你好,卢克·努南。问题是,当摄影机在场景中移动到距离1以上时,它应该关闭,但它会每隔一段时间打开/关闭。此外,尽管这段代码似乎在Unity3d播放窗口中工作,但在android mobile上测试时,当用户离开标记时,什么也不会发生。我相信,必须有一些东西添加到更新功能,以正确的功能,但我是新手了解它。此外,对于这个概念,请看一下我的编辑。有什么线索吗?啊,我想你还有其他的东西在工作。你链接到的应用程序可能会使用一些复杂的几何图形和图像分析来获取距离。我无法与我自己只使用Vuforia的NyARToolkit交谈,但我不相信应用程序中的单位必然与真实世界的单位相关。例如,1个游戏单位=1米,我会让应用程序在屏幕上显示距离,以计算出你的单位距离。一旦你知道距离是正确的,我会处理场景转换。抱歉,这不是一个更直接的答案。好吧@Luke Noonan,既然你没有使用NyARToolkit,但你对Vuforia有一些经验,你知道如何在Unity3d中实现这一点吗?你能给出一个如何在屏幕单位上获得距离的示例代码吗?