Kinect SDK播放器检测

我刚刚创建了一个2人游戏(比如ShapeGame), 但问题是当其中一个玩家从游戏场景中出来时,我无法检测到哪个(玩家)离开了游戏。

认为游戏中有2辆车。 首先检测到的玩家(称之为player1)使用左边的玩家,玩家2使用右边的玩家。 当player1离开场景时,突然player2控制左车,如果player1重新加入游戏,则player1再次取回左车的控制权,player2控制右车。

int id = 0; foreach (SkeletonData data in skeletonFrame.Skeletons) { if (SkeletonTrackingState.Tracked == data.TrackingState) { // do some work id++; } } 

事情是程序给第一个检测到的玩家id = 0 (称之为player1),第二个检测到的玩家为1(称之为player2)。 当player2从游戏中退出并重新加入时,没有问题。 它再次需要id = 1 。 但是当玩家1离开游戏时,玩家2取得id = 0因为它是此时第一个被检测到的玩家。

有解决方案?

每个玩家在Skeleton数组中都有一个索引:

 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可见性时,玩家索引是不正确的。