AR Trump2(多卡识别学习)
小贴士:
获取组件:GetComponent<T> T:要获取的组件类型设置
动画状态:Animator.SetBool(“变量名字“,变量值)
lnput.GetKeyDown(KeyCode.按键名)
距离判断:Vector3.Distance (坐标1,坐标2) ;
[坐标在物体的Transform上,自己身上直接transform.position,别的物体上即变量名.transform.position]
注意transform虽然是组件,但是是特有的(有且仅有一个,且不可被移除),所以可以直接调用,而没有用GetComponent<T>
还有一个gameObject(小写)是特指当前物体本身
输出语句:Print () Debug.Log()
添加了一张病毒的图片
其余与单图识别差不多
动画制作
我们设置bool变量控制是否切换动作
注意!变量名不要有空格
(单击也行哈哈)
但是当时我用着旧版的动画,没法使用新版的状态机
关于旧版Animatio在新版Animator中的播放问题
解决旧版Animation无法在新版动画animator中播放问题(Animator是新版的动画机,我们尽量紧随时代)
还有就是它动画不能循环播放,百度了一下,
Animator设置公话循环播放的办法:
实现扫描出来有一个特效动作然后进入idle动画
现在希望有一个apperance动画在最开头然后病毒出现之后跳一下:
于是我修改了动画状态机:
勾上是当前动画播放完切换状态,取消勾选是立即切换状态
修改Animator参数代码:
a.SetBool("appearance",true);
(前面是变量名,后面是变量值)
识别到物体后开始的参考:
Unity 使用Vuforia实现识别图后触发其他事件的方法
修改这个函数:
加一个public变量Animator
public Animator bingDu;
protected virtual void OnTrackingFound(){if (mTrackableBehaviour){var rendererComponents = mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);var colliderComponents = mTrackableBehaviour.GetComponentsInChildren<Collider>(true);var canvasComponents = mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);// Enable rendering:foreach (var component in rendererComponents)component.enabled = true;// Enable colliders:foreach (var component in colliderComponents)component.enabled = true;// Enable canvas':foreach (var component in canvasComponents)component.enabled = true;//后面是我添加的————————————————————————————————————————————————a.SetBool("appearance",true);}}protected virtual void OnTrackingLost(){if (mTrackableBehaviour){var rendererComponents = mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);var colliderComponents = mTrackableBehaviour.GetComponentsInChildren<Collider>(true);var canvasComponents = mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);// Disable rendering:foreach (var component in rendererComponents)component.enabled = false;// Disable colliders:foreach (var component in colliderComponents)component.enabled = false;// Disable canvas':foreach (var component in canvasComponents)component.enabled = false;//后面是我添加的————————————————————————————————————————————————a.SetBool("appearance", false);}}
也就是说我现在实现了让它识别出来的时候就跳一下,没有识别到的时候就让其呆在一个空的阶段
Trump和病毒靠近时触发攻击特效
现在要做的是当Trump和病毒靠近时触发攻击特效(两者皆触发攻击特效),于是我们现在需要通过距离判断,如果脚本本身在Trump身上,我们要拿到病毒引用即创建一个共有变量,一会儿将病毒拖过去赋值给它
public GameObject bingDu;
在其身上的组件可以直接GetComponent<T>
我们首先要看两个物体坐标距离多远的时候开始打架
Debug.Log("两者距离:"+Vector3.Distance(transform.position,bingDu.transform.position));
不能同时识别出两个物体问题解决:
最开始我不能同时识别出两个物体,百度后看到原因,才想起来上课讲过这里,我给忘了
然后就只能出现一个被识别的东西
修改方法:
关于Vuforia实现同时识别多个标志
外接摄像头显示设置方法
外接了一个摄像头,外接摄像头显示设置方法:
就可以了
(我发现每次摄像头距离拉远的时候距离会变大)
这个暂时还不是特别明白
Trump每次识别图不见的时候都可以重置
我想让Trump每次识别图不见的时候都可以重置(因为这个控制他走路的东西一会儿没控制好就会让他走不见)
最开始我是这样写的:
trump.transform.localPosition = Vector3.zero;
Unity 游戏框架搭建 2019 (十七、十八) Transform 重置与概率函数
unity3d中Transform组件 Rotate()和rotation变量详解
unity 修改transform.rotation的两种方法
protected virtual void OnTrackingLost(){if (mTrackableBehaviour){var rendererComponents = mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);var colliderComponents = mTrackableBehaviour.GetComponentsInChildren<Collider>(true);var canvasComponents = mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);// Disable rendering:foreach (var component in rendererComponents)component.enabled = false;// Disable colliders:foreach (var component in colliderComponents)component.enabled = false;// Disable canvas':foreach (var component in canvasComponents)component.enabled = false;//后面是我添加的————————————————————————————————————————————————bingDu.SetBool("bingduAppearance", false);trump.GetComponent<Animator>().SetBool("trumpAppearance", false);trump.transform.localPosition = Vector3.zero;trump.transform.localRotation = Quaternion.Euler(0.0f, 180f, 0.0f);//trump.transform.localRotation = Quaternion.Euler(Vector3.up * 180);//transform.localScale = Vector3.one;//transform.localRotation = Quaternion.identity;//transform.eulerAngles = new Vector3(0,0,0);}}
这样的话小人就可以每次都出现在纸片中央了
现在我们修改Trump里的函数,让它离病毒近且不走路的时候开始打架并且面朝病毒
但是我发现病毒消失之后trumpAttack还是没有改变,得回到DefaultTrackableEventHandler修改下,增加一条消失改变trumpAttack的语句
GetComponent<Animator>().SetBool("trumpAttack", false);
修改Trumpzou走路的时候的奇怪方向:
受上课视频启发,我修改了旋转的函数,原来是:
transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z);
修改为:
transform.eulerAngles = new Vector3(0, Mathf.Atan2(x, y) * Mathf.Rad2Deg, transform.eulerAngles.z);
去掉了X方向的旋转这样就显得没有很奇怪了
添加音效
利用Vuforia、Unity 实现AR识别图触发音频播放
创建空物体并在下面创建一个音源组件
Unity3D游戏引擎一共支持4个音乐格式的文件
.AIFF 适用于较短的音乐文件可用作游戏打斗音效
.WAV 适用于较短的音乐文件可用作游戏打斗音效
.MP3 适用于较长的音乐文件可用作游戏背景音乐
.OGG 适用于较长的音乐文件可用作游戏背景音乐
我用的是MP3格式的背景音乐,音乐下载地址:
TRUMP VS. CLINTON - Songify 2016
这样就好了,参考:
[Unity零基础入门]7.音效系统(使用Unity2018,基于Unity官方教学资源包)
下面的没有调好,不用放进PPT里了
本来想加一些小的打斗声音特效,但是老是加进去是有点问题
后来发现是因为我的音效时间太短了我却用mp3往里加,就加不进去
我用风云音频处理大师去了噪然后WAV格式导出(因为从B站弄出来的音频有背景音乐)
这样就可以用了
我想把这个小病毒往上移动一点,但是这样的话Trump也会跟着仰起头
AR Trump2(多卡识别学习)相关推荐
- 0基础小白用unity+vuforia实现AR随机抽卡/盲盒功能
unity+Vuforia实现海洋动物随机AR盲盒 目录 Vuforia 一.在vuforia上注册许可证 二.添加识别目标图像数据 三.搭建AR程序 四.随机盲盒的进阶AR程序 Vuforia 这是 ...
- Tilt Five AR桌游体验:概念很新颖,但缺乏高质量内容?
近年来,尽管AR在光学.显示.计算等技术上得到长足发展,但功能完整的AR眼镜成本高居不下,在C端还没有找到核心卖点.与此同时,一家由前Valve员工创办的AR公司Tilt Five却采取了不一样的产品 ...
- 《AR与VR开发实战》导读
前 言 增强现实(Augmented Reality)简称AR,是一种实时计算摄像机捕捉到的现实影像的位置及角度并加上相应虚拟信息的技术.这种技术不仅能展现真实世界的信息,还能通过增加虚拟信息而对现实 ...
- AR的昨天、今天和明天
ARVR技术交流群:129340649 欢迎加入! 前言 随着CES的召开和微软的HoloLens的亮相,增强现实技术(AugmentedReality,简称AR)似乎成为科技界的一个热门话题.这对于 ...
- 《近匠》AR学校:从教育领域看增强现实机遇何在
<近匠>AR学校:从教育领域看增强现实机遇何在 发表于2015-03-31 20:43| 6370次阅读| 来源CSDN| 11 条评论| 作者CSDN AR学校赵良华ARVRVufori ...
- 虚拟摄像头搭配高德AR导航出现的内存和cpu问题
最近在处理虚拟摄像头搭配高德AR导航时,出现了一些内存.cpu和优先级的问题,这里做个初步记录,后面再完善 CPU 1.)开一个hal3的后台录相.预览app,再开一个高德AR导航虚拟摄像头.这时cp ...
- matlab pburg,现代数字信号处理——AR模型
1. AR模型概念观 AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值,其目的都是为了增加有效数据,只是AR模型是由N点递推,而插值是由两 ...
- 房卡麻将分析之防作弊处理
房卡麻将分析之"防作弊处理" 棋牌游戏最重要的一个特点就是人与人对局,因为玩家各自的不可见,就存在着一些作弊的可能性和漏洞.对于手机房卡麻将游戏,大家最讨厌的问题就是作弊.如何防止 ...
- ARKit之路-ARSession生命周期管理与跟踪质量
版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载. ARSession整合运动传感器数据与计算机视觉处理数据跟踪用户设备姿态,为得到更好的跟踪质量,ARSession需要 ...
最新文章
- R语言对数正态分布分布函数Log Normal Distribution(dlnorm, plnorm, qlnorm rlnorm)实战
- reduceByKey和groupByKey区别与用法
- 批量提取视频文件信息(文件大小及时长)并统计
- JSP 插入到数据库的数据出现 “SQLServerException: 将截断字符串或二进制数据” 错误解决方案
- Overleaf v2 评测
- php 用积分兑换_PHP积分兑换接口demo
- android的listview点击获取当前选项值的方法
- HTML5 Media 原创翻译——第一章(持续更新中)
- UML教程8:构件图 部署图 附录
- opencv cv::Mat::convertTo()函数
- 上位机和下位机通信故障判断方法
- html下拉框选择日期,javascript实现日期三级联动下拉框选择菜单
- 全国计算机等级考试二级Python(2021年9月)备考笔记 第六天
- python3实现base64编码
- java虚无世界_我的世界1.7.10工业虚无整合包
- 网络计算机不能打印,如果共享打印机后局域网计算机无法打印,该怎么办?
- 2021年计算机考研408操作系统真题(客观题)
- 好奇,什么水平才能任教清华计算机系?
- java反射底层原理。
- 【完美解决】org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常