Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Vuforia/倾斜触摸和消除bg对物体的干扰_C#_Unity3d_Touch_Augmented Reality_Vuforia - Fatal编程技术网

C# Vuforia/倾斜触摸和消除bg对物体的干扰

C# Vuforia/倾斜触摸和消除bg对物体的干扰,c#,unity3d,touch,augmented-reality,vuforia,C#,Unity3d,Touch,Augmented Reality,Vuforia,我已经在一个项目上工作了一段时间,最终我得到的是一个少数报告风格的设置,前面有AR屏幕。我正在使用一个名为lean touch的unity插件,它允许我点击手机屏幕并选择3d对象。然后我可以移动它们并缩放它们,这很好 我有一个不想要的副作用,虽然在不同的情况下,这将是美妙的,但在这种情况下,它伤害了我的头。如果您使用用户定义的目标触发目标,屏幕将显示在您的前面,后面是摄像头(真实世界)。然后,我点击该项目,并可以在我的移动设备上拖动互动。问题是,如果有人在后台走过我的手机,跟踪系统会在他们走过时

我已经在一个项目上工作了一段时间,最终我得到的是一个少数报告风格的设置,前面有AR屏幕。我正在使用一个名为lean touch的unity插件,它允许我点击手机屏幕并选择3d对象。然后我可以移动它们并缩放它们,这很好

我有一个不想要的副作用,虽然在不同的情况下,这将是美妙的,但在这种情况下,它伤害了我的头。如果您使用用户定义的目标触发目标,屏幕将显示在您的前面,后面是摄像头(真实世界)。然后,我点击该项目,并可以在我的移动设备上拖动互动。问题是,如果有人在后台走过我的手机,跟踪系统会在他们走过时将我的物品“推”出我的屏幕

在不同的设置下,我可以利用这一点,当我在相机后面挥手时,我可以与物品互动,不幸的是,我所能做的只是将物品从一边推到另一边,而不是缩放或其他任何东西,这让体验有点问题。因此,我想帮助找出如何停止跟踪我的对象的位置,如果相机背景发生变化。因此,在触摸屏幕进行交互之前,将对象留在屏幕上

我不确定到底需要打开或关闭什么,如果它是vuforia设置或带有图层等的lean touch unity设置或刚体或其他要添加的内容。我需要方向性的建议,因为我现在正在兜圈子

下面是截图

如果我在后面挥手或有人走过,它会移动AR元素

如有意见,将不胜感激


与对象交互的唯一代码是下面的代码,它位于一个平面上,该平面用作交互屏幕预制的支架对象,因此当屏幕认为它是gui元素,因此不可交互时,lean touch将移动该平面,添加最后一行是为了隐藏原始平面,因此当我倾斜触摸并拖动屏幕时,副本不可见

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;

public class activateChildObjects : MonoBehaviour {

public GameObject MyObjName;
//Get the original GUI item to disable on drag of the cloned item
public string pathToDeactivate;


    void Update(){

        if(DefaultTrackableEventHandler.lostFound == true){

        foreach (Transform child in MyObjName.transform) {
            child.gameObject.SetActive(true); 
             } 
                 Debug.Log("GOT IT");


        }else{
                foreach (Transform child in MyObjName.transform) {
                                 child.gameObject.SetActive(false);
                } 

                Debug.Log("Lost");

        }
        //Remove original panel

GameObject.Find("UserDefinedTarget/"+pathToDeactivate).SetActive(false);

    }





}

编辑


好吧,我并没有阻止它发生,但在多次代码尝试后,我只是勾选了所有跟踪选项,以尝试并防止发现额外的跟踪,这是不对的,但这是一种改进。现在必须这样做。

如果相机背景发生变化,则停止跟踪我的对象位置。这是不可能的,因为您需要依靠相机背景的变化才能正确显示
游戏对象。好的,但有东西正在触发,而通常不会触发。在Vuforia中的普通图像目标场景中,你可以在背后挥动你的手,并且不会改变位置,除非你完全覆盖目标而不进行扩展跟踪。不知何故,通过精益触摸,它使检测行为像物体一样难以处理。也许是碰撞机导致了问题。精益触摸不应该是一个问题,因为它只识别显示器上的触摸。它可能来自最新的
vuforia
版本,可能会看到更改日志?你是对的,我使用了精益触控,问题仍然存在,如果我使用Prefate用户定义的示例,问题就不存在了,区别在于它们覆盖了画布,阻止了问题的发生,问题是它也会停止精益触摸的触摸事件。目前,我正试图停止跟踪,但一旦对象生成,就让相机保持开启状态。我使用了这段代码,但它也停止了初始生成:TrackerManager.Instance.GetTracker().Stop();如果相机背景发生变化,则停止跟踪我的对象位置。这是不可能的,因为您需要依靠相机背景的变化来正确显示
游戏对象
。好的,但某些东西正在触发,而通常不会触发。在Vuforia中的普通图像目标场景中,你可以在背后挥动你的手,并且不会改变位置,除非你完全覆盖目标而不进行扩展跟踪。不知何故,通过精益触摸,它使检测行为像物体一样难以处理。也许是碰撞机导致了问题。精益触摸不应该是一个问题,因为它只识别显示器上的触摸。它可能来自最新的
vuforia
版本,可能会看到更改日志?你是对的,我使用了精益触控,问题仍然存在,如果我使用Prefate用户定义的示例,问题就不存在了,区别在于它们覆盖了画布,阻止了问题的发生,问题是它也会停止精益触摸的触摸事件。目前,我正试图停止跟踪,但一旦对象生成,就让相机保持开启状态。我使用了这段代码,但它也停止了初始生成:TrackerManager.Instance.GetTracker().Stop();