Как исправить трансформацию не существует Unity - PullRequest
0 голосов
/ 10 января 2020

Vuforia AR Unity

Я получил этот код для отображения объекта на экране один раз при нажатии на следующий нажатие (-и), он перемещает один и тот же объект туда, где был нажат экран, вместо того, чтобы каждый раз создавать новый объект постучал Вот код

using System;
using UnityEngine;
using Vuforia;

public class DeployStageOnce : MonoBehavior
{
   public GameObject AnchorStage;
   private PositionalDeviceTracker _deviceTracker;
   private GameObject _previousAnchor;

public void Start()
{
   if(AnchorStage == null)
   { 
       Debug.Log("AnchorStage Must be specified");
       return;
   }

   AnchorStage.SetActive(false);
}

public void Awake()
{ 
  VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted);
}

public void OnDestory()
{
   VuforiaARController.Instance.UnregisterVuforiaStartCallback(OnVuforiaStarted);
}

private void OnVuforiaStart()
{ 
   _deviceTracker = TrackerManager.Instace.GetTracker<PositionDeviceTracker>();
}

public void OnInteractiveHitTest(HitTestResult result)
{
   if(result == null || AnchorStage == null)
   {
       Debug.LogWarning("Hit test is invalid or AnchorStage not set");
       return;
   }

    var anchor = _ deviceTracker.CreatePlaneAnchor(Guid.NewGuid().ToString(), result);

     if(anchor != null)
     { 
        AnchorStage.transform.parent = anchor.transform;
        AnchorStage.transform.localPosition = Vector3.zero;
        AnchorStage.transform.localRotation = Quaternion.identity;
        AnchorStage.SetActive(true);
     }
   if(_previousAnchor != null)
   {
      Destory(_previousAnchor);
   }
   _previousAnchor = anchor;
  }
}

Вот ошибки, которые я получаю

enter image description here

1 Ответ

0 голосов
/ 11 января 2020

Как уже говорилось ранее Anchor относится к типу Vuforia и не содержит компонентов, поэтому он не имеет transform.

HitTestResult, однако имеет Position и Rotation, поэтому я думаю, что вместо этого вы, вероятно, можете использовать что-то вроде

AnchorStage.transform.localPosition = result.Position;
AnchorStage.transform.localRotation = result.Rotation;
AnchorStage.SetActive(true);

В противном случае вы, возможно, захотите использовать компонент AnchorBehaviour, который можно настроить с помощью определенный Anchor через ConfigureAnchor


И _previousAnchor, вероятно, не должен быть типа GameObject, но Anchor

...