【Vuforia】基于Vuforia增强现实开发(二)之模型移动

来源:互联网 发布:网上商城系统web源码 编辑:程序博客网 时间:2024/05/01 08:07

前边步骤一样。需要写一个脚本,关联要移动的模型。

跟上一篇相比,知识把对象从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_METHODSvoid 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_METHODSIEnumerator 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_METHODSprivate 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>


0 0
原创粉丝点击