Kinect SDK 播放器检测
本文关键字:检测 播放器 SDK Kinect | 更新日期: 2023-09-27 18:33:53
我刚刚创建了一个 2 人游戏(如 ShapeGame),但问题是当其中一个玩家离开游戏场景时,我无法检测到哪个玩家(哪个玩家)离开了游戏。
认为游戏中有 2 辆车。第一个检测到的玩家(称为玩家 1)使用左边的,玩家 2 使用右边的。当玩家 1 离开场景时,玩家 2 突然控制了左车,如果玩家 1 重新加入游戏,玩家 1 再次夺回左车的控制权,玩家 2 控制右车。
int id = 0;
foreach (SkeletonData data in skeletonFrame.Skeletons)
{
if (SkeletonTrackingState.Tracked == data.TrackingState)
{
// do some work
id++;
}
}
问题是程序为第一个检测到的玩家(称为 player1)提供id = 0
,为第二个检测到的玩家(称为 player2)提供 1。当玩家 2 离开游戏并重新加入时,没有问题。再次需要id = 1
.但是当玩家 1 离开游戏时,玩家 2 会接受id = 0
因为它是此时第一个检测到的玩家。
有什么解决办法吗?
每个玩家在骨架数组中都有一个索引:
void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) {
SkeletonFrame sf = e.SkeletonFrame;
//check which skeletons in array are active and use that array indexes for player index
SkeletonData player1 = sf.Skeletons[playerIndex1];
SkeletonData player2 = sf.Skeletons[playerIndex2];
您可以使用该索引来识别您的球员,如果一个人离开并回来。
但是,如果两个玩家都离开了 Kinect 的视线,则当他们再次进入 Kinect 可见性时,玩家索引不正确。