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

时间:2017-10-26 23:15:34

标签: unity3d arkit

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

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

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

有没有人知道解决这个问题?

2 个答案:

答案 0 :(得分: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 :(得分:1)

我找到了解决方案!

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

org.apache.commons.jelly.JellyTagException: jar:file:/D:/Softwares/buildTools/Jenkins/war/WEB-INF/lib/jenkins-core-2.84.jar!/lib/form/descriptorList.jelly:84:76: <st:include> org.apache.commons.jelly.JellyTagException: jar:file:/D:/Softwares/buildTools/Jenkins/war/WEB-INF/lib/jenkins-core-2.84.jar!/lib/form/nested.jelly:33:22: <d:invokeBody> Cannot get property 'class' on null object
    at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:726)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:281)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:46)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
    at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)

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