c# - 在 Image Target 渲染之前,具有重力的物体会持续下落
问题描述
我正在尝试将一些内容渲染到图像目标上,并且其中一个对象具有Rigidbody
重力。有重力的物体在场景一开始就开始下落,但是图像目标还没有被识别出来,所以它一直在下落。
我在网上看到一些代码建议实施ITrackableEventHandler
,但 Vuforia 网站上的指南不再起作用。
Vuforia 建议的代码如下:
using UnityEngine;
using Vuforia;
using System.Collections;
public class MyPrefabInstantiator : MonoBehaviour, ITrackableEventHandler {
private TrackableBehaviour mTrackableBehaviour;
public Transform myModelPrefab;
// Use this for initialization
void Start ()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour) {
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
// Update is called once per frame
void Update ()
{
}
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
OnTrackingFound();
}
}
private void OnTrackingFound()
{
if (myModelPrefab != null)
{
Transform myModelTrf = GameObject.Instantiate(myModelPrefab) as Transform;
myModelTrf.parent = mTrackableBehaviour.transform;
myModelTrf.localPosition = new Vector3(0f, 0f, 0f);
myModelTrf.localRotation = Quaternion.identity;
myModelTrf.localScale = new Vector3(0.0005f, 0.0005f, 0.0005f);
myModelTrf.gameObject.active = true;
}
}
}
解决方案
Vuforia 已经ITrackableEventHandler
为你实现了类DefaultTrackableEventHandler
您可以使用如下脚本启用和禁用重力:
using UnityEngine;
public class EnablePlayerGravity : DefaultTrackableEventHandler
{
public Rigidbody player;
override protected void OnTrackingLost()
{
player.useGravity = false;
}
override protected void OnTrackingFound()
{
player.useGravity = true;
}
}
你不需要用ImageTarget
's注册这个,TrackableBehavior
因为 's 的Start
方法DefaultTrackableEventHandler
已经为你做了。您需要做的就是将此脚本放到您的脚本上ImageTarget
,然后在检查器中设置玩家(或任何具有重力的物体)的刚体。
推荐阅读
- amazon-web-services - 我是否必须授予对嵌套堆栈的 CloudFormation 模板的公共读取访问权限?
- powershell - 使用 Talend 在远程服务器上启动 PowerShell 脚本
- android - 是否可以将变量传递给枚举?
- r - 如何在情节中向动画情节添加恒定线
- python - 如何创建一个列表来存储字典列表中的许多值
- google-analytics - 出现日历(每日)会话计数跟踪
- python - 在 Python 中,SciPY ode.int 的过度工作完成问题
- css - 通过一个圆圈画一条线
- c# - 带有 C# 构建的 Gitlab CI
- c - 如何链接这两个功能