如何解决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 举报,一经查实,本站将立刻删除。