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);
        }
    }

四、效果

相关推荐
小李也疯狂16 小时前
Unity 中的立方体贴图(Cubemaps)
unity·游戏引擎·贴图·cubemap
牛掰是怎么形成的16 小时前
Unity材质贴图引用陷阱:包体暴涨真相
unity·材质·贴图
呆呆敲代码的小Y16 小时前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
EQ-雪梨蛋花汤16 小时前
【Unity优化】Unity多场景加载优化与资源释放完整指南:解决Additive加载卡顿、预热、卸载与内存释放问题
unity·游戏引擎
我的offer在哪里17 小时前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎
泡泡茶壶ᐇ17 小时前
Unity游戏开发入门指南:从零开始理解游戏引擎核心概念
unity·游戏引擎
YigAin18 小时前
Unity中的Lock,到底在锁什么,什么时候该用?
unity
Var_al19 小时前
抖小Unity WebGL分包命令行工具实践指南
unity·游戏引擎·webgl
天人合一peng21 小时前
unity 通过代码修改button及其名字字体的属性
unity·游戏引擎
GLDbalala1 天前
Unity基于自定义管线实现经典经验光照模型
unity·游戏引擎