【Vuforia】基于Vuforia增强现实开发(二)之模型移动
2016-04-03 10:44
309 查看
前边步骤一样。需要写一个脚本,关联要移动的模型。
跟上一篇相比,知识把对象从AudioSource换成了model,把脚本改了改接着用。
多三个新知识:
1、yield return
2、C#中的IEnumerator类
3、u3D中的开线程——StartCoroutine (move ());穿进去的是一个枚举类。
新建一个plane,以及它的材质球。当作地面。
![](https://img-blog.csdn.net/20160403110845313?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160403110853251?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160403110943642?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码如下:
跟上一篇相比,知识把对象从AudioSource换成了model,把脚本改了改接着用。
多三个新知识:
1、yield return
2、C#中的IEnumerator类
3、u3D中的开线程——StartCoroutine (move ());穿进去的是一个枚举类。
新建一个plane,以及它的材质球。当作地面。
代码如下:
<span style="font-size:18px;">using UnityEngine; using System.Collections; using Vuforia; public class TestMy : MonoBehaviour,ITrackableEventHandler { #region PRIVATE_MEMBER_VARIABLES //public GameObject UI; private TrackableBehaviour mTrackableBehaviour; public Transform Car; #endregion // PRIVATE_MEMBER_VARIABLES #region UNTIY_MONOBEHAVIOUR_METHODS void Start() { mTrackableBehaviour = GetComponent<TrackableBehaviour>(); if (mTrackableBehaviour) { mTrackableBehaviour.RegisterTrackableEventHandler(this); } } #endregion // UNTIY_MONOBEHAVIOUR_METHODS #region PUBLIC_METHODS /// <summary> /// Implementation of the ITrackableEventHandler function called when the /// tracking state changes. /// </summary> public void OnTrackableStateChanged( TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) { if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) { OnTrackingFound(); //UI.SetActive (true); StopAllCoroutines(); StartCoroutine (move ()); } else { //UI.SetActive (false); OnTrackingLost(); } } #endregion // PUBLIC_METHODS IEnumerator move(){ Car.transform.localPosition = new Vector3 (0,-2,0); while(Car.transform.localPosition!=Vector3.zero){ yield return new WaitForEndOfFrame (); //相对父级的位置 Car.transform.localPosition = Vector3.MoveTowards (Car.transform.localPosition, Vector3.zero, 0.5f * Time.deltaTime); } } #region PRIVATE_METHODS private void OnTrackingFound() { Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); // Enable rendering: foreach (Renderer component in rendererComponents) { component.enabled = true; } // Enable colliders: foreach (Collider component in colliderComponents) { component.enabled = true; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found"); } private void OnTrackingLost() { Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); // Disable rendering: foreach (Renderer component in rendererComponents) { component.enabled = false; } // Disable colliders: foreach (Collider component in colliderComponents) { component.enabled = false; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost"); } #endregion // PRIVATE_METHODS } </span>
相关文章推荐
- 求水仙花数
- 搜狐快站上线手机一键建移动站
- 曾经的四大天王之一
- 基于OpenGL 的STL 文件可视化研究
- java方法执行图解
- 算法虐我千百遍,我待算法如初恋
- 消息队列(Message Queue)基本概念(转)
- 转:MySQL从MyISAM引擎转换到InnoDB引擎需要注意的地方
- 求1的方加上2的方一直加到N的方小于等于1000的N的值
- 初识angularJs
- [HeadFirst-JSPServlet学习笔记][第三章:实战MVC]
- [HeadFirst-JSPServlet学习笔记][第三章:实战MVC]
- 如何配置OPENCV的Python接口
- 【杭电 】[2040]亲和数
- [HeadFirst-JSPServlet学习笔记][第二章:高层概述]
- 如何在 Debian 中配置 Tripewire IDS
- [HeadFirst-JSPServlet学习笔记][第二章:高层概述]
- 求出1~1000之间的素数,每行输出六个
- codeforces 617B 水题~
- [HeadFirst-JSPServlet学习笔记][第一章:前言与概述]