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

AR交互操作实例---玩转僵尸

AlbertLee 2017-7-21 09:35

通过视+ APP上的一个案例来了解熟悉AR开发常用的交互技巧

在上一篇的EasyAR 开发技巧---模型交互操作 我们熟悉了比较流行的移动端AR的交互技巧,今天我们在此基础上继续深入的了解,通过一个类似视+ APP 的一个实例来复习或熟悉AR开发的交互技巧。

预览:


视+ demo



相关资源:

怪物模型:链接:https://pan.baidu.com/s/1nv165mD密码: s8s6

iTween 插件:链接: https://pan.baidu.com/s/1nuNMajn 密码: b9nv

Step 1:开发准备

下载EasyAR SDK,搭建EasyAR 开发的最基本环境。(前面有基础教程:EasyAR 初学者入门指南(1)---显示模型
ok,接下来我们删除unity原有的Main Camera,把EasyAR_Startup的摄像机拖入到面板中

                  


接着把导入的怪物模型拖入面板中(注意:我们这里并没有用到Imagetarget,因为不需要识别功能。大家还可以脑洞大开,来为模型的展现增加个缓冲显示效果,在这里我就不实现了,主要把AR 移动端的核心知识给大家分享一下)

                 


Step 2:修改相关参数
先修改AR相机的角度,使其X值旋转270度

接下来使怪物Y值旋转180度,并放大2倍,修改默认动画(也可以不修改,只不过使的看起来效果更惊艳)。

                 


给怪物添加BoxCollider,并勾选is Trigger

Step 3:实现点击怪物播放动画实现交互

首先给物体再加一个Animation,根据你自己的喜爱添加相应的Animation

                    


接下来新建一段代码实现动画交互,代码十分简单,我们在上一篇(交互操作)上讲过,大家套用框架就好。

using UnityEngine;
using System.Collections;
public class PlayAnim : MonoBehaviour
{       
public Animation anim;       
void Start()       
{               
anim = GetComponent();
}
void Update()
{
if (!anim.isPlaying) {
anim.Play ("2HitCombo");
}
}
void OnMouseDown()
{
anim.Play ("jumpAttack_RM");
}
}

然后我们要实现的是双指实现缩放,单指任意拖动,这部分的代码在前一篇文章(EasyAR开发技巧---模型交互操作)中讲过,以后可以把这些当作常用代码来使用,会比较方便,直接拖动到模型身上即可。

step 4:点哪走哪

在这里,我只提供自己的一种实现方法,当然实现这种效果可以有很多方法。
首先,我们先建一个plane,修改大小为(2,2,2)

                       


                       


然后,接下来,修改其TagGround

                       


最重要的一部分,关闭其Renderer,使其不显示,在这里我们只要Mesh Collider

                      


                      



我们先在这个模型新建个脚本,在这里我们用射线检测的方法来实现。
我们用Input.touchCount 先判断是否有触摸事件,然后获取Input.GetTouch(0).position ,触摸手机屏幕的位置,然后射线检测,实现移动,完整代码如下:

using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
private Vector3 clickPosion;
public float speed = 5f;
void Start()
{
clickPosion = transform.position;
}
void Update()
{
if (Input.touchCount > 0) {
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch (0).position);
RaycastHit hit;
Physics.Raycast(ray, out hit);
try
{
if (hit.collider.tag == "Ground") //获取点击位置的世界坐标
{
Vector3 v = hit.point;
clickPosion = new Vector3(v.x, transform.position.y, v.z);
transform.LookAt(clickPosion);
}
}
catch
{
}
iTween.MoveTo(gameObject, clickPosion, 4f);
}
}
}

关于iTween 知识:

最后,我们测试下就ok了,如果有什么问题欢迎大家在下面评论交流。
鲜花
鲜花 (1)
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋

刚表态过的朋友 (1 人)

分享至 : QQ空间
收藏
  • 509595232 2017-9-22 14:26
    亲,为什么我的anim=GetComponent();  报错.
    新手。。
  • AlbertLee 2017-7-25 23:10
    jw63640: 请问这个模型下面的阴影是怎么实现的?
    最简单的话就是直接设置Directional Light的Shadow,当然你也可以通过shader 来设置
  • jw63640 2017-7-24 10:22
    请问这个模型下面的阴影是怎么实现的?
  • zhangwei111 2017-7-21 13:46
    Step3的Player脚本的Start()方法