找回密码
 立即注册
搜索
EasyAR 教程 Unity 查看内容

EasyAR 开发实例---AR红包(初级)

AlbertLee 2017-8-9 10:36

用EasyAR SDK 来实现一个AR红包功能

使用EasyAR SDK 来开发好玩的应用

分享一篇如何用EasyAR SDK来开发一个简单的AR红包的功能。

预览:


开发资源:

红包模型:链接:https://pan.baidu.com/s/1pKWvqsj密码: x4h2

粒子特效:链接: https://pan.baidu.com/s/1i5swzLN 密码: dwtr

NGUI插件:链接: https://pan.baidu.com/s/1qYAyYL2 密码: 7jb2

Step 1:开发环境搭建

首先我们下载EasyAR SDK (unity版本)并导入到unity中,并到官网申请开发时所用到的Key值,在unity中,删除原有的Camera,将EasyAR_Startup拖入到面板中,并将key之填入。注意:在这里我们并没有用到识别功能,因此没必要用ImageTarget。


接下来,我们准备红包模型,有些人在导入红包模型的过程中可能会遇到贴图丢失的情况,在这里,我们只需将红包贴图重新挂到材质上即可。


在这里,我们准备两个红包预制体,来实现不同的交互。并修改它们的大小以便区分。在这里我给他们命名分别为Hong,HongBao。具体详细参数如下

Hong:


HongBao:


接下来,我们给两个红包添加Tag,分别为HongHongBao

 



为两个红包预制体添加BoxCollider,并勾选Trigger。大小自己调节。

最后,我们为我们所交互的那个红包HongBao添加个动画。选中它,并在菜单栏Window-Animation,打开后,点击Create,并保存命名。


接着点Add Property,选Transfrom-Scale


接下来,在中间某一帧选中,并改变大小,值应该大一点,这样才会有抖动的效果:


Step 2:产生红包

首先我们先创建几个随机点,分别命名point1,point2,point3,这是红包所降落的位置。参考数值如下:大家可以自行设置

point1:


point2:


point3:



接下来,我们创建一段代码来使得红包可以降落,在这里用Translate来实现,当然大家可以用其他方法,比如添加Rigidbody,给个受力也可以,不过那样有点麻烦。(补充:当红包的Z坐标小于-8时,就销毁)

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脚本,实现随机产生红包。

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

}

}

}

Step 3:交互

当点击抖动红包时我们产生炫酷的粒子特效,将如下方法添加到Move.cs中

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

 

注意:

 


接下来我们使用单例模式在CreateHong.cs脚本中实现:

首先声明:

publicstaticCreateHong_instace;

接着:

void Awake()

{

_instace = this;

}

然后实现方法供外界调用

public void PlayScale()

{

daxiao.gameObject.SetActive (true);

daxiao.PlayForward ();

}

在Move.CS中实现:

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:链接: https://pan.baidu.com/s/1qYLS77Y 密码: 9n1u

CreateHong.cs:链接: https://pan.baidu.com/s/1jIBVt4q 密码: 483i

鲜花
鲜花
握手
握手
雷人
雷人
路过
路过 (1)
鸡蛋
鸡蛋

刚表态过的朋友 (1 人)

分享至 : QQ空间
收藏
  • upc-fuzi 2017-10-17 10:22
    红包模型是不是给的不对呀