开发AR个人总结:

1.开发移动端相对来说Vuforia兼容性好一些

2.开发PC端相对来说EasyAR兼容性好一些

我这里使用的是EasyAR

实现AR大屏幕大致步骤:

1.去EasyAR官网下载 对应的Unity SDK EasyAR Unity版下载地址

2.将下载好的unity包导入Unity

3.在EasyAR文件夹下的Prefabs找到EasyAR_Startup 将其拖入游戏场景中 删除原有的默认摄像头Main Camera 并设置key(key要去EasyAR申请一个账号创建)

4.导入模型 并创建动画 创建Animation Controller与模型关联

5.用代码控制模型自动播放行走

关键代码如下:

恐龙自动走路

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class xunlu : MonoBehaviour {//恐龙模型public Animator konglong;public Transform P_02;     //第一个点public Transform P_03;public Transform P_04;//物体朝方向移动速度public float m_speed = 0.1f;//物体朝方向旋转速度public float RouteSpeed = 25f;//手否可以移动public bool Move_Bl = true;//行走到第几个点了public int zou_state = 1;//吃的动画void Eating() {Move_Bl = false;konglong.SetTrigger("Eating");}//移动的动画void Moving() {Move_Bl = true;konglong.SetTrigger("Moving");}//移动方法void MovingTo() {transform.Translate(new Vector3(-6f * Time.deltaTime, 0, 0));}//计算两个向量之间的 角度public float RotateTo(Vector3 to_){Vector3 velocity = Quaternion.Inverse(transform.rotation) * to_; //对目标向量进行反向旋转,得到的新向量与z轴的夹角即为目标向量与当前物体方向的夹角     float angle = Mathf.Atan2(velocity.x, velocity.z) * Mathf.Rad2Deg; //返回tan值为x/z的角的弧度,再转化为度数。return angle;}//恐龙移动void konglongAction() {//第一个点 Move_B1是否可以移动if (zou_state == 1 && Move_Bl){旋转方向float current = transform.eulerAngles.y;//this.transform.LookAt(P_02.transform, Vector3.up);float angle = RotateTo(P_02.transform.position);Debug.Log("angle ==" + angle);Mathf.MoveTowardsAngle参数1.要移动物体的y值2.移动到目的地目标的旋转角度(Rotate的y)3.旋转的速度float next = Mathf.MoveTowardsAngle(current, 20, RouteSpeed * Time.deltaTime);//欧拉角konglong.transform.eulerAngles = new Vector3(0, next, 0);//移动到目标点MovingTo();//计算差值 Vector3 pos1 = transform.position;Vector3 pos2 = P_02.transform.position;float dist = Vector2.Distance(new Vector2(pos1.x, pos1.z), new Vector2(pos2.x, pos2.z));if (dist < 2f){transform.position = transform.position;//恐龙到达目的地P_01Invoke("Eating", 0f);if (konglong.GetCurrentAnimatorStateInfo(0).IsName("WalkFW") && konglong.IsInTransition(0) == false){//将行走状态至为 2 表示开始向第二个点行走zou_state = 2;Invoke("Moving", 1.2f);}}}else if (zou_state == 2 && Move_Bl){//恐龙动画是否是WalkFW向前行走的动画状态if (konglong.GetCurrentAnimatorStateInfo(0).IsName("WalkFW")){旋转方向float current = transform.eulerAngles.y;this.transform.LookAt(P_03.transform, Vector3.up);float angle = RotateTo(P_03.transform.position);Mathf.MoveTowardsAngle参数1.要移动物体的y值2.移动到目的地目标的旋转角度(Rotate的y)3.旋转的速度float next = Mathf.MoveTowardsAngle(current, -(angle + 90), RouteSpeed * Time.deltaTime);//欧拉角konglong.transform.eulerAngles = new Vector3(0, next, 0);Invoke("MovingTo", 0f);}Vector3 pos1 = transform.position;Vector3 pos2 = P_03.transform.position;//计算差值float dist = Vector2.Distance(new Vector2(pos1.x, pos1.z), new Vector2(pos2.x, pos2.z));if (dist < 2f){  //恐龙到达目的地// Destroy(this.gameObject); //销毁恐龙Invoke("Eating", 0f);zou_state = 3;Invoke("Moving", 1.2f);}} else if (zou_state == 3 && Move_Bl) {//恐龙动画是否是WalkFW向前行走的动画状态if (konglong.GetCurrentAnimatorStateInfo(0).IsName("WalkFW")){旋转方向float current = transform.eulerAngles.y;this.transform.LookAt(P_04.transform, Vector3.up);float angle = RotateTo(P_04.transform.position);Mathf.MoveTowardsAngle参数1.要移动物体的y值2.移动到目的地目标的旋转角度(Rotate的y)3.旋转的速度float next = Mathf.MoveTowardsAngle(current, -(angle + 90), RouteSpeed * Time.deltaTime);//欧拉角konglong.transform.eulerAngles = new Vector3(0, next, 0);Invoke("MovingTo", 0f);}Vector3 pos1 = transform.position;Vector3 pos2 = P_04.transform.position;//计算差值float dist = Vector2.Distance(new Vector2(pos1.x, pos1.z), new Vector2(pos2.x, pos2.z));if (dist < 2f){  //恐龙到达目的地Destroy(this.gameObject); //销毁恐龙}}}// Use this for void Start () {if (zou_state == 1){//开始默认给恐龙旋转30//konglong.transform.Rotate(0, 30, 0);//RotateTo(P_01);}}// Update is called once per framevoid Update () {konglongAction();}
}

并设置游戏物体 寻路的点:

每隔一段时间自动创建物体的类:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;//自动创建物体类
public class Ins_Din : MonoBehaviour {//需要自动创建的物体public GameObject Din_Pre;//创建物体的时间private int Frame_Count;private // Use this for initializationvoid Start() {}// Update is called once per framevoid Update() {}void FixedUpdate() {Frame_Count++;if (Frame_Count>1100) {Ins();Frame_Count = 0;}}void Ins() {Instantiate(Din_Pre,gameObject.transform.position, gameObject.transform.rotation);Din_Pre.transform.Rotate(0, 30, 0);}}

每隔一段时间 自动创建物体的类

标记一个点,拖到标记点上,物体就在标记的点创建

Unity_EasyAR_AR大屏幕开发相关推荐

  1. Android 与 Chrome OS 中针对大屏幕设备的更新

    随着智能终端硬件的不断革新,大尺寸设备的种类越来越丰富,比如手机.折叠屏设备.平板电脑.ChromeBook.外接显示器的 ChromeBox 和集成屏幕的 Chromebase 等.Google 团 ...

  2. 安卓开发,拼接屏幕、大屏幕、户外广告无人值守循环播放视频,图片。开机自动播放,断电后自动播放,重起后自动播放功能

    安卓开发,拼接屏幕.大屏幕.户外广告无人值守循环播放视频,图片.开机自动播放,断电后自动播放,重起后自动播放功能 因客户要求,开机自动播放视频,不需要电脑控制,通电自动循环播放视频. 电脑成本太高,最 ...

  3. 十大python开发软件-2017年最棒的七个Python图形应用GUI开发框架

    作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,目前市场上有大量Python GUI开发框架可供选择,Python wiki GUI programming给出了超过30个跨平 ...

  4. 连续投影算法_中航国画荣获“2020 IAV国际视听嘉年华” 大屏幕投影显示行业三大奖项!...

    近日,"2020IAV国际视听嘉年华"在深圳湾创新生态园隆重举行,航空工业上电下属子公司中航国画作为2020年迪拜世博会中国馆官方合作伙伴应邀参加此次高峰论坛,并在展会期间凭借4K ...

  5. 基于润和大禹开发板的导购系统项目方案

    大禹开发板介绍 润和大禹系列HH-SCDAYU200是润和软件推出的社区内首款支持OpenHarmony富设备的开发板,基于瑞芯微RK3568,集成双核心架构GPU以及高效能NPU,板载四核64位Co ...

  6. 智能电视 = Android + 高清大屏幕 ?

    随着智能时代的来临,传统产业与IT产业的融合已经是大势所趋,不可阻挡.今天,我们已经越来越多的在IT新闻里看到家电厂商的消息了.在智能手机和平板电脑所取得的巨大成功的影响下,家电厂商开始认真思考自己的 ...

  7. 2019最新微信墙微信上墙微信弹幕婚庆会议大屏幕3D签到抽奖摇一摇微信上墙

    演示地址: https://xianchang.vdcom.cn 密码是admin 2019最新微信墙微信上墙婚庆会议大屏幕3D签到抽奖摇一摇微信上墙源码.这是我在淘宝上面花了200大洋买的,php版 ...

  8. 大数据 - 大数据开发技术课程总结(未完)

    1.课程介绍 大数据开发课程主要从了解大数据概念.特征开始,再介绍大数据Java开发和Hadoop的环境配置,较为全面地讲解了HDFS分布式存储,MapReduce分布式计算框架,Spark平台开发和 ...

  9. 数据仓库工程师、大数据开发工程师、BI工程师、ETL工程师之间有什么区别?

    商务智能.商务智能工程师是商业智能行业的工程师.从需求分析师到数据仓库架构师.ETL工程师.数据分析工程师.报表开发工程师.数据挖掘工程师等,都可以称为BI工程师. ETL工程师:从事系统编程.数据库 ...

最新文章

  1. 参数量110亿,附赠750GB数据集,Google提NLP预训练模型T5
  2. Apache2.2提示Cannot load php5apache2.dll into server的的解决
  3. IP与DSCP优先级
  4. 自定义用户控件,实在数据动态提示
  5. 通过一段代码说明C#中rel与out的使用区别
  6. 城市列表简称JSON数据
  7. linux shell sed d删除指定行并更换分隔符为#
  8. php post防止hash攻击,MyBB editpost.php脚本'posthash' 参数SQL注入漏洞
  9. C++11中的右值引用
  10. Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool
  11. 第五十四期:Libra盟友纷纷“跳船”,联盟链还有戏吗?
  12. html怎样在一张图片里写字,用HTML代码在图片上写字
  13. 广告传媒实际税负怎么计算_建材销售类营业额3亿,缺进项致税负高?成立4家独资企业节税90%...
  14. 对于如何长胖和减肥的研究
  15. win7 使用扫描仪扫描照片
  16. python爬虫之爬取拉勾网
  17. 数据类型、字符编码、文件处理
  18. Linux 0.11-重新设置idt和gdt-08
  19. three.js-EffectComposer辉光使用展示
  20. Octree(八叉树)

热门文章

  1. Spark的Cache和Checkpoint区别和联系拾遗
  2. Airtest  入门
  3. 从Docker零基础到懂一点实践教程(四)
  4. 3步上架iOS APP【2022最新教程】
  5. 方舟神器/贡品代码大全
  6. 俄罗斯黑产界淘宝运营人被美国抓捕,靠收租进账千万美元
  7. Redis03-优惠券秒杀
  8. oppo android多大内存,OPPO R15使用感受,大内存真的很有必要
  9. IP地址转换(C++)
  10. DCloud之Android平台应用启动时读写手机存储、访问设备信息(如IMEI)等权限策略控制