我试图用Kinect和Unity检测自定义手势。它适用于一个人,但Unity会在需要检测到多个人时冻结并需要重新启动。
void Update()
{
if (BodySourceManager == null)
{
return;
}
_BodyManager = BodySourceManager.GetComponent<BodySourceManager>();
if (_BodyManager == null)
{
return;
}
Kinect.Body[] data = _BodyManager.GetData();
if (data == null)
{
return;
}
_VGB_Source = _BodyManager.GetRecordedGesturesData();
detectedGestures = _BodyManager.GetDetectedGestures();
List<ulong> trackedIds = new List<ulong>();
foreach (var body in data)
{
if (body == null)
{
_BodyManager.SetVGBReaderPauseState(true);
continue;
}
if (body.IsTracked)
{
_BodyManager.SetVGBReaderPauseState(false);
trackedIds.Add(body.TrackingId);
_VGB_Source.TrackingId = body.TrackingId;
DetectTargetGestureOnBodies("SwipeRight", body.TrackingId.ToString());
}
}
}
在一个单独的BodySourceManager类中,我打开kinect传感器并初始化VisualGestureBuilderFrameSource对象。从这个脚本附加到一个空的GameObject,我想看看手势&#34; SwipeRight&#34;被检测到。
有没有人对Unity为什么会冻结多个实体有任何想法,或者如果有人知道可以使用多个实体的样本,那将非常受欢迎。