区域目标丢失后保持 GameObj/VFX 可见/位置

问题描述 投票:0回答:0

这是我的第一篇文章。

我学习Unity和C#已经一个月了,我找不到任何适合我理解水平的参考资料所以我在这里发帖。


我正在使用 unity3d + vuforia 为 IOS 制作 AR 应用程序原型。

当部署到我的手机时,它会显示父级游戏对象,但一旦区域目标丢失,一切都会消失。我的假设是我必须通过指定目标何时丢失来维护对象位置。我也尝试了不同的方法,但它们没有用。

Game Object / VFX parented to the Vuforia Area Target

Using Extended Tracking

Play mode example

这是我尝试实现的代码,但似乎我的 IDE 无法识别 vuforia 库,或者我使用的是过时的代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;

public class AreaTargetObjectPersistence : MonoBehaviour, ITrackableEventHandler
{
    private TrackableBehaviour areaTarget;
    private bool isTracking;
    private Vector3 initialPosition;

    void Start()
    {
        // Get the TrackableBehaviour component from the Area Target
        areaTarget = GetComponent<TrackableBehaviour>();
        if (areaTarget)
        {
            // Register this script as the event handler for the Area Target
            areaTarget.RegisterTrackableEventHandler(this);
        }

        // Store the initial position of the object
        initialPosition = transform.position;
    }

    void Update()
    {
        // If the Area Target is currently being tracked
        if (isTracking)
        {
            // Update the object's position to match the Area Target's position
            transform.position = areaTarget.transform.position;
            transform.rotation = areaTarget.transform.rotation;
        }
    }

    public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.TRACKED)
        {
            // Area Target is being tracked
            isTracking = true;
        }
        else
        {
            // Area Target is lost
            isTracking = false;
        }
    }

    public void OnTargetLost()
    {
        // Reset the object's position to the initial position when target is lost
        transform.position = initialPosition;
        transform.rotation = Quaternion.identity;
    }
}

我得到这些错误:

  1. CS0246:找不到类型或名称空间名称“TrackableBehaviour”(是否缺少 using 指令或程序集引用?)
  2. error CS0246:找不到类型或命名空间名称“ITrackableEventHandler”(是否缺少 using 指令或程序集引用?)

有时它似乎无法识别 OnTargetLost() 和 OntargetFound()

在 Xcode 上各种关于被弃用的东西的警告

我也试过调查 iPhone 的已知问题,但它似乎不是

我应该使用锚点吗?

另一个用户的类似问题

在此先感谢您的帮助,建设性的批评和建议被很好地接受。

github 存储库

c# ios iphone unity3d vuforia
© www.soinside.com 2019 - 2024. All rights reserved.