第一部分:前言
实现功能:打开APP或运行该demo后,会从天而降红包,有些红包是空的(大一点的),抖动的红包里面“有钱”,点击之后会产生相应的交互。
 
第二部分:预览
所用到的资源:
 
红包模型:链接: https://pan.baidu.com/s/1pKWvqsj 密码: x4h2
粒子特效:链接: https://pan.baidu.com/s/1eSxIbmi 密码: 5suh
 
NGUI插件:链接: https://pan.baidu.com/s/1hsMa0Ig 密码: uh3a
 
第三部分:开发环境搭建
首先我们设置下开发环境,我们最终导出的是 APK文件,所以我们playSetting为Android,并修改屏幕大小为480x800。
接着我们下载EasyAR SDK (unity版本)并导入到unity中,并到官网申请开发时所用到的Key值,在unity中,删除原有的Camera,将EasyAR_Startup 拖入到面板中,并将key之填入。注意:在这里我们并没有用到图像的识别,因此没必要用ImageTarget。
 
<ignore_js_op> 
 
接下来,我们准备红包模型,有些人在导入红包模型的过程中可能会遇到贴图丢失的情况,在这里,我们只需将红包贴图重新挂到材质上即可。
 
<ignore_js_op> 
 
在这里,我们准备两个红包预制体,来实现不同的交互。并修改它们的大小以便区分。在这里我给他们命名分别为Hong,HongBao。具体详细参数如下
Hong:
 
 
HongBao:
 
<ignore_js_op> 
 
<ignore_js_op> 
 
接下来,我们给两个红包添加Tag,分别为Hong,HongBao。
<ignore_js_op> <ignore_js_op> 
 
为两个红包预制体添加BoxCollider,并勾选Trigger。大小自己调节。
 
最后,我们为我们所交互的那个红包HongBao添加个动画。选中它,并在菜单栏Window-,打开后,点击Create,并保存命名。
 
<ignore_js_op> 
 
接着点Add Property,选Transfrom-Scale
<ignore_js_op> 
接下来,在中间某一帧选中,并改变大小,值应该大一点,这样才会有抖动的效果:
 
<ignore_js_op> 
 
 
第四部分:编写代码产生AR红包
首先我们先创建几个随机点,分别命名point1,point2,point3,这是红包所降落的位置。参考数值如下:大家可以自行设置
point1:
 
<ignore_js_op> 
 
point2:
<ignore_js_op> 
 
point3:
<ignore_js_op> 
接下来,我们创建一段代码来使得红包可以降落,在这里用Translate来实现,当然大家可以用其他方法,比如添加Rigidbody,给个受力也可以,不过那样有点麻烦。(补充:当红包的Z坐标小于-8时,就销毁)
 
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Move : MonoBehaviour {
        public GameObject par;
        // Use this for initialization
        void Start () {
                 
        }
         
        // Update is called once per frame
        void Update () {
                transform.Translate (-transform.forward*2f*Time.deltaTime);
                if (transform.position.z < -8f) {
                        Destroy (this.gameObject);
                }
        }
}

接下来,创建CreateHong空物体,在上面挂上CreateHong.cs脚本,实现随机产生红包。
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using UnityEngine;
using System.Collections;
public class CreateHong : MonoBehaviour {
        public Transform[] points;
        public GameObject[] hongbaos;
        private int index;
                 
        // Use this for initialization
        void Start () {
                 
                InvokeRepeating ("CreateHongbao",1f,1f);
        }
         
        // Update is called once per frame
        void Update () {
         
        }
        void CreateHongbao(){
                 
                        int i = Random.Range (0, 10);
                        if (i > 1) {
                                index = 0;
                        } else {
                                index = 1;
                        }
                        GameObject go = GameObject.Instantiate (hongbaos [index], points [Random.Range (0, points.Length)].position + new Vector3 (Random.Range (-0.5f, 0.5f), 0, 0), Quaternion.identity) as GameObject;
                        go.transform.Rotate (new Vector3 (270, 180, 0));
                         
                }
        }
                 
         
}

第五部分:实现交互
我们实现当点击普通红包时由于时间关系我没做任何处理,当点击抖动红包时我们产生炫酷的粒子特效,将如下方法添加到Move.cs中
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
5
6
7
8
9
void OnMouseDown()
        {
                if (gameObject.tag == "Hong") {
                        Debug.Log ("ddd");
                } else if(gameObject.tag=="HongBao") {
                        CreateHong._instace.isCreate = false;
                        GameObject go=GameObject.Instantiate (par,gameObject.transform.position,Quaternion.identity) as GameObject;
                        Destroy (go,2f);
                }
        }

并在2s后销毁该粒子
好了,接下来,我们用NGUI插件实现产生优惠卷或红包(这不重要,重要的是实现思路与方法)
效果如下
首先,我们创建Sprite
 
接着添加TweenScale
 
<ignore_js_op> 
 
注意:
 

<ignore_js_op>

 

<ignore_js_op>

 
接下来我们使用单例模式在CreateHong.cs脚本中实现:
首先声明:
public static CreateHong _instace;
接着:
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
void Awake()
        {
                _instace = this;
                 
        }

然后实现方法供外界调用
[AppleScript] 纯文本查看 复制代码
?
1
2
3
4
public void PlayScale()
        {
                daxiao.gameObject.SetActive (true);
                daxiao.PlayForward ();
        }

在Move.CS中实现:
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
void OnMouseDown()
        {
                if (gameObject.tag == "Hong") {
                        Debug.Log ("ddd");
                } else if(gameObject.tag=="HongBao") {
                        CreateHong._instace.isCreate = false;
                        GameObject go=GameObject.Instantiate (par,gameObject.transform.position,Quaternion.identity) as GameObject;
                        Destroy (go,2f);
                        CreateHong._instace.PlayScale ();
                }
        }

 
第六部分:完整代码
Move.cs(挂在红包上):
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Move : MonoBehaviour {
        public GameObject par;
        // Use this for initialization
        void Start () {
                 
        }
         
        // Update is called once per frame
        void Update () {
                transform.Translate (-transform.forward*2f*Time.deltaTime);
                if (transform.position.z < -8f) {
                        Destroy (this.gameObject);
                }
        }
        void OnMouseDown()
        {
                if (gameObject.tag == "Hong") {
                        Debug.Log ("ddd");
                } else if(gameObject.tag=="HongBao") {
                        CreateHong._instace.isCreate = false;
                        GameObject go=GameObject.Instantiate (par,gameObject.transform.position,Quaternion.identity) as GameObject;
                        Destroy (go,2f);
                        CreateHong._instace.PlayScale ();
                }
        }
}

CreateHong.cs:
[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using UnityEngine;
using System.Collections;
public class CreateHong : MonoBehaviour {
        public static CreateHong _instace;
        public Transform[] points;
        public GameObject[] hongbaos;
        private int index;
        public bool isCreate;
        public TweenScale daxiao;
        void Awake()
        {
                _instace = this;
                isCreate = true;
        }
                 
        // Use this for initialization
        void Start () {
                 
                InvokeRepeating ("CreateHongbao",1f,1f);
        }
         
        // Update is called once per frame
        void Update () {
         
        }
        void CreateHongbao(){
                if (isCreate) {
                        int i = Random.Range (0, 10);
                        if (i > 1) {
                                index = 0;
                        } else {
                                index = 1;
                        }
                        GameObject go = GameObject.Instantiate (hongbaos [index], points [Random.Range (0, points.Length)].position + new Vector3 (Random.Range (-0.5f, 0.5f), 0, 0), Quaternion.identity) as GameObject;
                        go.transform.Rotate (new Vector3 (270, 180, 0));
                         
                } else {
                        return;
                }
        }
                 
        public void PlayScale()
        {
                daxiao.gameObject.SetActive (true);
                daxiao.PlayForward ();
        }
}

转载于:https://www.cnblogs.com/mafeng/p/7600102.html

Unity -- 用EasyAR制作出AR红包相关推荐

  1. Android - 基于EasyAR SDK的AR红包的实现

    原文:http://blog.csdn.net/ListerCi/article/details/72953294 一.综述 还记得支付宝在新年里推出的 AR 红包吗?你只要用手机扫一扫"福 ...

  2. 【Unity 03】高通 AR SDK基本使用以及项目发布

    PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为日更. 笔记内容均为 自己理解,会有遗漏处,不保证每个都对,仅供参考 Part 1 网站注册: 官网:https ...

  3. 扫福得福背后,支付宝 AR 红包的技术创新与故事

    春节期间,支付宝的「扫福得福」活动火爆异常.AR 是一种新的交互方式,与传统营销方式相比,可以使用户更深入地参与互动,给用户带来新体验.而支付宝红包,寄托着用户对未来的期盼,因此其团队就考虑将 AR ...

  4. AR红包Android端实现原理

    欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录.技术微信公众号:程序员小乐 前不久支付宝推出了AR红包的功能,风靡一时,最近刚好完成了这样的需求,特此整理分享,以求 ...

  5. 说一说关于破解支付宝AR红包的事

    当朋友圈的你们才开始分享支付宝AR红包的消息的时候,我已经对它动了一二三四次歪脑筋了,虽然事实证明并不是那么顺利,至今我也只在电脑前识别出5个不知道在哪里的红包,其中一个还因为定位信息不符开不了. 昨 ...

  6. 支付宝 AR 红包技术探讨及如何在下一波技术浪潮中畅泳

    AR继2016年在Pokemon Go的引爆下,2017年新年前后由支付宝带来了第二波热潮.这些现象背后预示着下一波技术浪潮,除人工智能及机器人外,代码构成的虚拟世界正逐步通过AR/VR侵入我们的生活 ...

  7. 扫福得福背后,支付宝AR红包的技术创新与故事

    春节期间,支付宝的「扫福得福」活动火爆异常.AR是一种新的交互方式,与传统营销方式相比,可以使用户更深入地参与互动,给用户带来新体验.而支付宝红包,寄托着用户对未来的期盼,因此其团队就考虑将AR与红包 ...

  8. 较于微信红包,支付宝AR红包是个好产品吗?

    2016/12/26阅读 7.5k 评论 6收藏 23 零基础学产品,BAT产品总监带,2天线下集训+1年在线课程,全面掌握优秀产品经理必备技能.了解详情 好的产品是以用户目标为导向,能帮助用户更好的 ...

  9. AR红包大战一触即发,2017年会成AR营销元年吗?

    互联网行业2016年不缺黑天鹅事件,但同样也不缺乏黑马产品.作为年度最热领域之一的AR(增强现实),就连续出现黑马产品.支付宝在12月21日推出"AR实景红包"一夜爆红,看上要想要 ...

最新文章

  1. c语言链表如何做成环,在C语言中单向链表环测试并返回环起始节点的实现方法...
  2. 踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜
  3. Shell字符串处理之 ${}
  4. 前端js基础智能机器人
  5. 【区间DP】甲虫(luogu 4870)
  6. Oracle随记笔记
  7. hadoop(八) - hbase集群环境搭建
  8. Docker的八种用途
  9. wget ip_图解IP防护等级
  10. 序列最小最优化算法(SMO)
  11. 解决方案:智慧工地智能巡检方案视频监控系统
  12. LaTeX中的多行数学公式
  13. 代号SXH-JS-1
  14. javascript检测5到10位数的QQ号
  15. 【数字图像处理】图像几何变换之 图像的极坐标变化展开鱼眼图
  16. MIMO-OFDM系统原理及其关键技术
  17. 血泪史: k8s Initial timeout of 40s passed.
  18. 【博客567】http/2 goaway frame 与 grpc graceful restart
  19. 游戏陪玩App,如雨后春笋般冒出,直接导致整个游戏陪玩源码市场的持续火爆
  20. 微信影视小程序是如何赚钱的?效果怎么样?

热门文章

  1. 「完美解决」关于最新Ubuntu22.04.1安装launchpad里面PPA报错:“InRelease not available“,“not found file“等
  2. html、css、js粒子特效——前端
  3. Win10怎么删除快速访问中最近使用文件记录
  4. 数字社会案例集(1.0版本) 附下载
  5. 1:2000比例尺测图
  6. iOS开发者账号的区别
  7. 深度学习机器学习面试问题准备
  8. 设备价格暴涨让苹果公司在俄罗斯的最大授权经销商被迫关门谢客
  9. matlab中的代数环问题及其消除方法,Matlab中的代数环问题及其消除方法.pdf
  10. PMP证书可以办北京工作居住证的消息,别说你还不知道!