2012-05-12 44 views
8

我刚刚创建了一个2人游戏(如ShapeGame)但问题是当一个玩家离开游戏场景时,我无法检测到哪一个(哪个玩家)离开游戏。Kinect SDK播放器检测

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

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

     id++; 
    } 
} 

的事情是程序给出id = 0用于第一检测的播放器(称之为PLAYER1)为1秒检测播放器(称之为player2)。当玩家2离开游戏并重新加入时,没有问题。它再次需要id = 1。但是当玩家1离开游戏时,玩家2需要id = 0,因为它是此时第一个被侦测到的玩家。

任何解决方案?

回答

3

每个球员都有骷髅数组索引:

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能见度时,玩家指数是不正确的。