我是脚本新手,我很难在Unity3d中为Android手机制作AR应用程序。我遇到了一个问题,无论我做什么都无法解决。
情况如下。我有一个AR相机,用于为Unity3d增强现实的NyARToolkit插件编写。
此AR相机,标记为" MainCamera",需要关闭,当达到一定距离(意味着移开Android手机)形成标记,在其上呈现模型。 当达到这个距离时,我想要启动" MainCamera"并加载另一个统一场景。
以下代码是我迄今为止尝试过的,没有太大成功。需要提一下的是,这个脚本附加在" MainCamera"上,这是需要禁用的gameObject。
这是脚本:
#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手机从标记移开时,我可以正确地设置相机并设置相机吗?
提前感谢大家的答案。
&#34;编辑1&#34;
我知道我甚至没有接近在移动设备上工作的功能,但是这个link会让你看到这个功能。我需要首先获得从标记到移动的距离,如果该距离是例如在1.5米以上时,应关闭AR摄像机并加载新的水平。
答案 0 :(得分:0)
你没有提到究竟什么不起作用。根据您从帖子和您提供的代码示例中拼凑起来的内容,您只需添加级别加载代码即可。
#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");
}
}
答案 1 :(得分:0)
这是我使用的代码...
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
}