首页 文章

如何在 Unity 中完全重置 ARKit 场景

提问于
浏览
2

嘿伙计们我和 ARKit 和 Unity 有一个小问题。

在我正在制作的游戏中,当玩家死亡时我正在重新加载我的场景,但是当重新加载场景时,所有游戏对象仍然处于与上一个会话相同的位置。当场景重新加载时,我希望所有对象都返回到它们的起始位置。

我看到一些关于位置和旋转的变量在代码中被标记为“静态”。我试过更改它们但是我遇到了很多编译错误。

有没有人知道这方面的方法?

2 回答

  • 4

    创建此方法并在需要重置场景时调用它:

    using UnityEngine.XR.iOS;
    .
    .
    .
    
    public void ResetScene() {
    ARKitWorldTrackingSessionConfiguration sessionConfig = new ARKitWorldTrackingSessionConfiguration ( UnityARAlignment.UnityARAlignmentGravity, UnityARPlaneDetection.Horizontal);
            UnityARSessionNativeInterface.GetARSessionNativeInterface().RunWithConfigAndOptions(sessionConfig, UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors | UnityARSessionRunOption.ARSessionRunOptionResetTracking);
    }
    
  • 1

    我找到了解决方案!

    在“!UnityEditor”部分的 ARCameraManager 脚本中添加这些代码行。

    UnityARSessionRunOption options = new UnityARSessionRunOption();
    options = UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors | UnityARSessionRunOption.ARSessionRunOptionResetTracking;
    m_session.RunWithConfigAndOptions(config, options);
    

    现在,每次重新加载场景时,都会重置所有 AR 元素(平面,锚点,摄像机跟踪数据)。

相关问题