Unity(ar) 多图脱卡功能 -- Vuforia

using UnityEngine;
using Vuforia;

/// <summary>
/// A custom handler that implements the ITrackableEventHandler interface.
/// </summary>
public class MyTrackable : MonoBehaviour,
                                            ITrackableEventHandler
{
    private TrackableBehaviour mTrackableBehaviour;


    private bool isFirstfound = false;
    private void Awake()
    {

    }
    void Start()
    {
        Manager.Instance.allImageTarget.Add(this.transform);
        HiderThisModel();
        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
        {
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
        }
    }

    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            isFirstfound = true;
            Manager.Instance.lost = false;
            if (Manager.Instance.lastTranckName == mTrackableBehaviour.TrackableName)
            {
                return;
            }
            else
            {
                Manager.Instance.HideallModel();
                ShowThisModel();
            }
        }
        else
        {
            if (isFirstfound)
            {

                Manager.Instance.lastTranckName = mTrackableBehaviour.TrackableName;
                Manager.Instance.lost = true;
            }

        }
    }

    /// <summary>
    /// 显示当前模型
    /// </summary>
    public void ShowThisModel()
    {
        foreach (Transform child in this.transform)
        {
            child.gameObject.SetActive(true);
        }
    }
    /// <summary>
    /// 隐藏当前模型
    /// </summary>
    public void HiderThisModel()
    {
        foreach (Transform child in this.transform)
        {
            child.gameObject.SetActive(false);
        }
    }
}
  • 2,Manager管理类
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

public class Manager : MonoBehaviour {
    public static Manager Instance;
    public List<Transform> allImageTarget = new List<Transform>();
    public string lastTranckName = "";
    public bool lost = false;
    private Transform ARCamera;
    private Vector3 lostCamPos = new Vector3(0, 4.9f, -3.5f);
    public Transform arcam;

    private void Awake()
    {
        ARCamera = GameObject.Find("ARCamera").transform;
        Instance = this;
    }

    void Update () {
        if (lost)
        {
            //ARCamera.localPosition = lostCamPos;
            ARCamera.DOLocalMoveX(lostCamPos.x, 0.2f);
            ARCamera.DOLocalMoveY(lostCamPos.y,0.2f);
            ARCamera.DOLocalMoveZ(lostCamPos.z, 0.2f);
            ARCamera.DOLocalRotate(new Vector3(55, 0, 0), 0.2f);
           // ARCamera.localRotation = Quaternion.Euler(55, 0, 0);
            //ARCamera.localRotation = Quaternion.identity;

        }
    }
    public void HideallModel()
    {
        foreach (Transform imageTarget in allImageTarget)
        {
            imageTarget.GetComponent<MyTrackable>().HiderThisModel();
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 喜欢一个人应该最先从喜欢他周围的事物开始。然后爱屋及乌,用你的心意,给万物符上魂魄,让它们变的活波而灵动,飞舞在他...
    半岛狸猫阅读 1,729评论 0 0
  • 在孤独中惬意放纵,在平静中焦虑难安,独来独往的我渴望被感情滋润,却又害怕任何亲密的接触。我不冷漠,我不迟钝,但是冷...
    Clementine酱阅读 2,087评论 2 0

友情链接更多精彩内容