问题描述
我正在使用 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 (将#修改为@)