2012-05-12 3 views
8

Ho appena creato un gioco per 2 giocatori (come ShapeGame) ma il problema è quando uno dei giocatori si allontana dalla scena del gioco, non riesco a capire quale (giocatore) è uscito dal gioco .Rilevamento lettore SDK Kinect

Pensa che ci sono 2 auto nel gioco. Il primo giocatore rilevato (chiamalo giocatore1) usa uno a sinistra e il giocatore 2 usa quello a destra. Quando il giocatore1 lascia la scena, improvvisamente il giocatore 2 prende il controllo dell'auto di sinistra, e se il giocatore 1 si unisce al gioco, il giocatore1 riprende il controllo dell'auto di sinistra e il giocatore 2 prende il controllo dell'auto giusta.

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

     id++; 
    } 
} 

La cosa è il programma dà id = 0 per il giocatore prima rilevato (lo chiamano player1) e 1 per il secondo rilevato il giocatore (lo chiamano player2). Quando il giocatore2 si allontana dal gioco e si ricongiunge, non ci sono problemi. Richiede ancora id = 1. ma quando il giocatore 1 esce dal gioco, il giocatore 2 prende id = 0 perché è il primo giocatore rilevato a questo punto.

Qualche soluzione?

risposta

3

Ogni giocatore ha un indice nella matrice 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]; 

è possibile utilizzare tale indice per identificare i giocatori se uno congedo e torna.
Ma se entrambi i giocatori lasciano la vista del Kinect non è garantito che l'indice del giocatore sia corretto quando entrano di nuovo nella visibilità Kinect.