vuforia用脚本控制模型
关键词: unity vuforia AR C#
vuforia常用的显示模型的方法是在unity编辑器中,将模型移动到imageTarget下方,但是这样不方便控制模型的显示和消失,可以通过c#脚本控制
一、创建脚本
在imageTarget中可以找到脚本DefaultObserverEventHandler,复制这个脚本中的全部内容,在Assets下新建文件夹Scripts,Scripts文件夹下新建c#脚本,命名为myDefaultObserverEventHandle
r,将刚才复制的内容粘贴覆盖到myDefaultObserverEventHandler文件中
,记得将myDefaultObserverEventHandler
文件中的类名从DefaultObserverEventHandler改为myDefaultObserverEventHandler
类中创建变量
public GameObject aiXiPrefab;
二、修改脚本
1. 创建变量
脚本中找到OnTrackingFound类,表示当找到目标图案imageTarget时的动作,修改代码
protected virtual void OnTrackingFound()
{
if (mObserverBehaviour)
{
// var rendererComponents = mObserverBehaviour.GetComponentsInChildren<Renderer>(true);
// var colliderComponents = mObserverBehaviour.GetComponentsInChildren<Collider>(true);
// var canvasComponents = mObserverBehaviour.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;
GameObject aiXi = GameObject.Instantiate(aiXiPrefab);
aiXi.transform.position = this.transform.position;
aiXi.transform.parent = this.transform;
}
OnTargetFound?.Invoke();
}
2. 销毁模型
代码如下:
protected virtual void OnTrackingLost()
{
if (mObserverBehaviour)
{
// var rendererComponents = mObserverBehaviour.GetComponentsInChildren<Renderer>(true);
// var colliderComponents = mObserverBehaviour.GetComponentsInChildren<Collider>(true);
// var canvasComponents = mObserverBehaviour.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;
Destroy(GameObject.Find("AiXi(Clone)"));//unity中模型命名为AiXi
}
OnTargetLost?.Invoke();
}
ImageTarget中Add Component,添加上myDefaultObserverEventHandle
脚本,然后在Status Filter中改为Tracked,可以在目标图案消失时,模型也消失被销毁
最后将AiXi模型取消勾选