Как сделать так, чтобы камера AR обнаруживала лицо кубов, похожих на 57 North Merge Cube? - PullRequest
0 голосов
/ 23 апреля 2020

Как сделать так, чтобы камера AR распознавала лица куба почти так же, как 57 север ? Мне удалось показать AR на кубе и запустить действие (показывать сферу), но я не могу сделать его активным, только когда камера AR направлена ​​к кубу (независимо от того, как долго он находится к нему) и когда он перемещается к другой грани куба, он отключает предыдущее действие и разрешает только ту сторону куба, к которой обращена Камера.

Я просто хочу, чтобы он активировался только на одной стороне вместо несколько сфер одновременно.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VectorDetect : MonoBehaviour
{
    private Transform ARcam;
    private Transform FrontFace;
    public GameObject FrontObj;
    private Transform RightFace;
    public GameObject RightObj;
    private void Awake()
    {
        FrontObj.SetActive(false);
        RightObj.SetActive(false);
    }
    void Start()
    {
        ARcam = GameObject.FindWithTag("MainCamera").transform;
        FrontFace = GameObject.FindWithTag("FRONT").transform;
        RightFace = GameObject.FindWithTag("RIGHT").transform;
    }
    void Update()
    {
        //FRONT
        if (FrontFace)
        {
            Vector3 forward = transform.TransformDirection(Vector3.forward);
            Vector3 toOther = FrontFace.position - transform.forward;

            if (Vector3.Dot(forward, toOther) > 0) //If the camera is facing in the Front Face direction
            {
                if ((Vector3.Dot(forward, toOther) > 0.5) && (Vector3.Dot(forward, toOther) < 200))
                {
                    print("FACING FRONT");
                    FrontObj.SetActive(true);
                }
                else
                {
                    FrontObj.SetActive(false);
                    print("NOT FACING FRONT");
                }
            }

        }

        //RIGHT

        if (RightFace)
        {
            Vector3 forward = transform.TransformDirection(Vector3.forward);
            Vector3 toOther = FrontFace.position - transform.forward;

            if (Vector3.Dot(forward, toOther) > 0.5)  
            {
                print("FACING RIGHT");
                RightObj.SetActive(true);

            }
            else
            {
                RightObj.SetActive(false);
                print("NOT FACING RIGHT");
            }
        }
    }
}
...