C# 在UnityARWorldMap中,用户如何知道游戏对象是否被重新定位?
我已经测试了场景UnityARWorldMap。我已经成功地重新定位了ARworldmap。一旦模型/游戏对象重新定位,我希望跟踪和检测到的平面消失。我发现了一个名为UpdateWorldMappingStatus.cs的类。我尝试添加一些类似于CheckWorldMapStatus方法的代码,我添加了函数CheckIfRelocalized方法。下面是给定的代码C# 在UnityARWorldMap中,用户如何知道游戏对象是否被重新定位?,c#,unity3d,arkit,C#,Unity3d,Arkit,我已经测试了场景UnityARWorldMap。我已经成功地重新定位了ARworldmap。一旦模型/游戏对象重新定位,我希望跟踪和检测到的平面消失。我发现了一个名为UpdateWorldMappingStatus.cs的类。我尝试添加一些类似于CheckWorldMapStatus方法的代码,我添加了函数CheckIfRelocalized方法。下面是给定的代码 public class UpdateWorldMappingStatus : MonoBehaviour { publi
public class UpdateWorldMappingStatus : MonoBehaviour
{
public Text text;
public Text tracking;
// Use this for initialization
void Start ()
{
UnityARSessionNativeInterface.ARFrameUpdatedEvent += CheckWorldMapStatus;
// I have subscibed to a event
UnityARSessionNativeInterface.ARFrameUpdatedEvent += CheckIfRelocalized;
}
void CheckWorldMapStatus(UnityARCamera cam)
{
text.text = cam.worldMappingStatus.ToString ();
tracking.text = cam.trackingState.ToString () + " " + cam.trackingReason.ToString ();
}
void CheckIfRelocalized(UnityARCamera cam)
{
if (cam.worldMappingStatus==ARWorldMappingStatus.ARWorldMappingStatusMapped &&cam.trackingState == ARTrackingState.ARTrackingStateNormal && cam.trackingReason==ARTrackingStateReason.ARTrackingStateReasonNone)
{
Debug.Log("Plane Detection Stopped");
StopPlaneDetection();
}
}
void OnDestroy()
{
UnityARSessionNativeInterface.ARFrameUpdatedEvent -= CheckWorldMapStatus;
UnityARSessionNativeInterface.ARFrameUpdatedEvent -= CheckIfRelocalized;
}
public void StopPlaneDetection()
{
UnityARSessionNativeInterface session = UnityARSessionNativeInterface.GetARSessionNativeInterface();
ARKitWorldTrackingSessionConfiguration config = new ARKitWorldTrackingSessionConfiguration();
config.planeDetection = UnityARPlaneDetection.None;
config.enableLightEstimation = true;
//config.enableAutoFocus = true;
session.RunWithConfig(config);
}
}
在上面的代码中,当我单击“加载”按钮时,模型立即出现在屏幕前。但是,如果我没有使用CheckIfRelocalized方法,模型在保存时会在其初始设置的位置重新定位,但无法隐藏平面。我想,如果不重新启动会话,我必须隐藏平面和跟踪?