ARCore 对象交互

问题描述

我正在使用 ARCore 跟踪多个图像并在检测到的每个图像上生成多个游戏对象。 我写了类似于此链接内容https://forum.unity.com/threads/ar-foundation-multiple-tracked-image-managers.697625/

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

[RequireComponent(typeof(ARTrackedImageManager))]
public class TrackMultiple : MonoBehavIoUr
{
[Header("The length of this list must match the number of images in Reference Image Library")]
public List<GameObject> ObjectsToPlace;

private int refImageCount;
private Dictionary<string,GameObject> allObjects;
private ARTrackedImageManager arTrackedImageManager;
private IReferenceImageLibrary refLibrary;

void Awake()
{
    arTrackedImageManager = GetComponent<ARTrackedImageManager>();
}

private void OnEnable()
{
    arTrackedImageManager.trackedImagesChanged += OnImageChanged;
}

private void Ondisable()
{
    arTrackedImageManager.trackedImagesChanged -= OnImageChanged;
}

private void Start()
{
    refLibrary = arTrackedImageManager.referenceLibrary;
    refImageCount = refLibrary.count;
    LoadobjectDictionary();
}

void LoadobjectDictionary()
{
    allObjects = new Dictionary<string,GameObject>();
    for (int i = 0; i < refImageCount; i++)
    {
        allObjects.Add(refLibrary[i].name,ObjectsToPlace[i]);
        ObjectsToPlace[i].SetActive(false);
    }
}

void ActivateTrackedobject(string _imageName)
{
    allObjects[_imageName].SetActive(true);
}

public void OnImageChanged(ARTrackedImagesChangedEventArgs _args)
{
    foreach (var addedImage in _args.added)
    {
        ActivateTrackedobject(addedImage.referenceImage.name);
    }

    foreach (var updated in _args.updated)
    {
        allObjects[updated.referenceImage.name].transform.position = updated.transform.position;
        allObjects[updated.referenceImage.name].transform.rotation = updated.transform.rotation;
    }
}

}

然而,我想做的是实现检测到的对象之间的交互。例如,如果检测到猴子和香蕉,“猴子”游戏对象会走向“香蕉”游戏对象。它与 Octagon 4D 应用程序非常相似。 (最多检测到四个游戏对象)

问题是我要生成 30 个游戏对象。如果我使用上面的代码,它必须检查 ARTrackedImageLibrary 中的每个图像,这似乎效率低下。有没有其他方法可以检查是否检测到特定图像?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)