ARCore Unity - Поместить объекты между двумя объектами - PullRequest
0 голосов
/ 29 октября 2018

Используя ARCore в Unity, я пытаюсь поместить один игровой объект между двумя игровыми объектами. К сожалению, он не отображается, похоже, это проблема с Anchor.

* Используя Vuforia, у меня не было проблем с позиционированием игровых объектов.

То, что я пытаюсь достичь, это:

  1. Поместите два объекта (A и B) на землю, когда я касаюсь поверхности. Это работает
  2. Поместите gameObject (C) между двумя объектами (A и B). Не отображать

    // Place target objects A and B on surface touch
    
    GameObject prefab;
    GameObject prefab2;
    prefab = AndyPointPrefab;
    prefab2 = AndyPlanePrefab;
    
    hitpoint= hitpoint + 1;
    
    // Place object A
    
    if (hitpoint==1){
    
      target1 = Instantiate(prefab, hit.Pose.position, hit.Pose.rotation);
      target1.transform.Rotate(0, k_ModelRotation, 0, Space.Self);
      var anchor = hit.Trackable.CreateAnchor(hit.Pose);
      target1.transform.parent = anchor.transform;
      mIsFirsttargetVisible=true;
    
    }
    else if (hitpoint==2){  // Place object B
    
     target2 = Instantiate(prefab2, hit.Pose.position, hit.Pose.rotation);
     target2.transform.Rotate(0, k_ModelRotation, 0, Space.Self);
     var anchor = hit.Trackable.CreateAnchor(hit.Pose);
     target2.transform.parent = anchor.transform;
     mIsSecondTargetVisible=true;
     hitpoint=-1;
    
    }
    
    //Update function : todisplay point C in-between.
    Update() {
    
    // Place object C
    
    if(mIsFirsttargetVisible && mIsSecondTargetVisible){
    GameObject objectMiddle = GameObject.CreatePrimitive(PrimitiveType.Sphere); 
    Vector3 middlePosition =  (target1.transform.position+target2.transform.position)/2;    
    objectMiddle.transform.position = middlePosition;
    objectMiddle.transform.localScale = new Vector3(200.0f, 10.0f, 200.0f);
    }
    }
    

EDIT

Я успешно прибыл, чтобы поместить игровой объект между ними.

я добавил эту последнюю строку в мой код: target1.transform.parent = objectMiddle.transform;

 if(mIsFirsttargetVisible && mIsSecondTargetVisible){
    GameObject objectMiddle = GameObject.CreatePrimitive(PrimitiveType.Sphere); 
    Vector3 middlePosition =  (target1.transform.position+target2.transform.position)/2;    
    objectMiddle.transform.position = middlePosition;
    objectMiddle.transform.localScale = new Vector3(200.0f, 10.0f, 200.0f);
    target1.transform.parent = objectMiddle.transform;
    }
...