2012-05-12 42 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能見度時,玩家指數是不正確的。