Vuforia AR篇(三)— AR模型出场效果

目录


前言

在这个数字化日益增长的时代,增强现实(AR)技术正以前所未有的速度发展。AR模型,作为这一技术的核心组成部分,不仅改变了我们与数字世界的互动方式,还极大地丰富了我们的现实体验。本文将探讨AR模型的出场效果。


一、AR模型出场

创建ARCamera和ImageTarget

导入一个带动画的模型

复制下面的脚本

然后改名成下面DeathObserverEventHandler

找到下面的2个方法

重写下面的2个方法

csharp 复制代码
    protected virtual void OnTrackingFound()
    {
        // if (mObserverBehaviour)
        //     SetComponentsEnabled(true);
        //
        //
        //
        // OnTargetFound?.Invoke();
        GameObject death = Instantiate(deathPrefab, transform, true);
        death.name = "Death";
        death.transform.position = transform.position;
    }

    protected virtual void OnTrackingLost()
    {
        // if (mObserverBehaviour)
        //     SetComponentsEnabled(false);
        //
        //
        // OnTargetLost?.Invoke();
        GameObject death = GameObject.Find("Death");
        if (death != null)
        {
            Destroy(death);
        }

    }

然后挂上脚本

二、AR出场特效

导入特效素材

添加特效代码

csharp 复制代码
    protected virtual void OnTrackingFound()
    {
        // if (mObserverBehaviour)
        //     SetComponentsEnabled(true);
        //
        //
        //
        // OnTargetFound?.Invoke();
        GameObject death = Instantiate(deathPrefab, transform, true);
        death.name = "Death";
        death.transform.position = transform.position;
        GameObject effect = Instantiate(effectPrefab, transform, true);
        effect.name = "Effect";
        effect.transform.position = transform.position;
    }

    protected virtual void OnTrackingLost()
    {
        // if (mObserverBehaviour)
        //     SetComponentsEnabled(false);
        //
        //
        // OnTargetLost?.Invoke();
        GameObject death = GameObject.Find("Death");
        if (death != null)
        {
            Destroy(death);
        }

        GameObject effect = GameObject.Find("Effect");
        if (effect != null)
        {
            Destroy(effect);
        }
    }

三、添加过渡效果

csharp 复制代码
    private void Update()
    {
        _death.transform.localPosition = Vector3.Lerp(_death.transform.localPosition , Vector3.zero, Time.deltaTime);
        _death.transform.localScale = Vector3.Lerp(_death.transform.localScale , new Vector3(0.4f, 0.4f, 0.4f), Time.deltaTime);
    }

    protected virtual void OnTrackingFound()
    {
        // if (mObserverBehaviour)
        //     SetComponentsEnabled(true);
        //
        //
        //
        // OnTargetFound?.Invoke();
         _death = Instantiate(deathPrefab, transform, true);
        _death.name = "Death";
        
        
        GameObject effect = Instantiate(effectPrefab, transform, true);
        effect.name = "Effect";
        effect.transform.position = transform.position;
    }


    protected virtual void OnTrackingLost()
    {
        // if (mObserverBehaviour)
        //     SetComponentsEnabled(false);
        //
        //
        // OnTargetLost?.Invoke();
        GameObject death = GameObject.Find("Death");
        if (death != null)
        {
            Destroy(death);
        }

        GameObject effect = GameObject.Find("Effect");
        if (effect != null)
        {
            Destroy(effect);
        }
    }

四、效果

相关推荐
浅陌sss1 天前
设计模式 --- 原型模式
unity·游戏引擎
1 天前
Unity中基于2.5D的碰撞系统
unity·游戏引擎
scott.cgi1 天前
「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
unity·ugui·textmeshpro·tmp_inputfield·inputfield·inputfield输入框·ugui输入框
图导物联1 天前
GIS-AI 融合引擎架构:智慧景区导览系统的毫秒级响应与千级并发优化实战
python·ar·gis·智慧文旅·景区导览
蔗理苦2 天前
2025-04-08 NO.4 Quest3 交互教程
unity·交互·vr·quest
我有医保我先冲2 天前
智能仓储数字孪生Demo(Unity实现)
unity·游戏引擎
EQ-雪梨蛋花汤2 天前
【Unity】Unity Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作
3d·unity·交互
晴空了无痕3 天前
群体智能避障革命:RVO算法在Unity中的深度实践与优化
算法·unity·游戏引擎
虹科数字化与AR3 天前
安宝特应用 | 工业AR技术赋能高端制造领域验收流程数字化转型
人工智能·ar·ar眼镜·工业ar
EQ-雪梨蛋花汤3 天前
【UnityEditor扩展】如何在 Unity 中创建棱柱体(用作VR安全区检测),同时在编辑器插件中实现与撤销/恢复功能
unity·编辑器·vr