我已经编写了一个脚本来跟踪和取消跟踪人类身体使用untrack这里一个球gameObject是一个子的身体prreset,这是由Unity提供的。当身体被跟踪时,球体被成功地激活,但当身体丢失时,它不会被停用。下面是剧本。
using System;
using System.Collections.Generic;
using Unity.MARS.Data;
using Unity.MARS.Providers;
using Unity.XRTools.ModuleLoader;
using UnityEngine;
using UnityEngine.UI;
public class BodyTrackManager : MonoBehaviour, IUsesMarsBodyTracking, IUsesFunctionalityInjection
{
IProvidesMarsBodyTracking IFunctionalitySubscriber<IProvidesMarsBodyTracking>.provider { get; set; }
IProvidesFunctionalityInjection IFunctionalitySubscriber<IProvidesFunctionalityInjection>.provider { get; set; }
[SerializeField] GameObject testObject;
void Awake()
{
this.EnsureFunctionalityInjected();
}
private void OnEnable()
{
this.SubscribeBodyAdded(OnBodyAdded);
}
void OnDisable()
{
this.UnsubscribeBodyAdded(OnBodyRemoved);
}
void OnBodyAdded(IMarsBody body)
{
testObject.SetActive(true);
}
void OnBodyRemoved(IMarsBody body)
{
testObject.SetActive(false);
}
}
此脚本附加到场景中的空游戏对象。
发布于 2022-10-18 18:12:14
我们在论坛上的DM上讨论过这个问题,但是对于任何遇到这个问题的人来说,你想要的是这样的:
void OnEnable()
{
this.SubscribeBodyAdded(OnBodyAdded);
this.SubscribeBodyRemoved(OnBodyRemoved);
}
void OnDisable()
{
this.UnsubscribeBodyAdded(OnBodyAdded);
this.UnsubscribeBodyRemoved(OnBodyRemoved);
}
听起来这仍然不太有效(OnBodyRemoved没有被调用),这可能是火星上的一个bug。我们正在调查。
https://stackoverflow.com/questions/74095635
复制