我现在面临如下问题:当我想在其中放置四处移动场景中的对象,我需要留在它的地方,以便它必须是一个锚对象。
不幸的是,我们不能没有使用飞机地面检测锚定在Vuforia的对象。
后此外“启用飞机地面检测”,增强对象出现,永远不会丢失的功能“onTrackingLost”永不触发。看来,这个功能不会自动被调用,而不是工作!
我们怎样才能解决这个问题,好吗?!
你可以从vuforia目标分离对象 - 使得它不是一个孩子,而是在层次结构设置到其他地方 - 只有将其移动到正确的坐标OnTargetFound
。
例如添加像UnityEvent<Transform>
(这正好给vuforia目标)
[system.Serializable]
public class TransformEvent : UnityEvent<TargetFoundEventHandler>
{
}
public class TargetFoundEventHandler : DefaultTrackableEventHandler
{
public TransformEvent onTrackingFound;
protected override void OnTrackingFound()
{
onTrackingFound.Invoke(transform);
}
}
你可以用它来引用回调(类似于onClick
s的Button
),但这些方法都期待像TargetFoundEventHandler
参数(这正好到该对象的地方)
public class PlaceMeOnTarget()
{
public void PlaceOnTarget(TargetFoundEventHandler target)
{
transform.SetPositionAndRotation(target.transform.position, target.transform.rotation);
// optinally remove the callback so this object
// will not be placed elsewhere
target.onTrackingFound.RemoveListener(PlaceOnTarget);
}
}