2012-05-12 2 views
8

Je viens de créer un jeu à 2 joueurs (comme ShapeGame) mais le problème est quand l'un des joueurs gauches de la scène de jeu, je ne peux pas détecter lequel (quel joueur) est parti du jeu .Kinect SDK lecteur de détection

Pensez qu'il y a 2 voitures dans le jeu. Le premier joueur détecté (appelez-le joueur1) utilise un joueur gauche et joueur2 utilise un joueur droit. Lorsque le joueur1 quitte la scène, le joueur2 prend le contrôle de la voiture gauche et si le joueur1 rejoint le jeu, le joueur1 reprend le contrôle de la voiture gauche et le joueur2 prend le contrôle de la voiture droite.

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

     id++; 
    } 
} 

Ce qui est le programme donne id = 0 pour le joueur d'abord détecté (appeler player1) et 1 pour la deuxième joueur détecté (appeler player2). Quand le joueur2 quitte le jeu et rejoint, il n'y a pas de problème. Il faut encore id = 1. mais lorsque joueur1 gauches de la partie, le joueur 2 prend id = 0 car c'est le premier joueur détecté à ce stade.

Des solutions?

Répondre

3

Chaque joueur a un index dans le tableau squelette:

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]; 

Vous pouvez utiliser cet index pour identifier vos joueurs si un congé et revient.
Mais si les deux joueurs quittent la vue de la Kinect il n'est pas accordé que l'index du joueur est correct quand ils entrent à nouveau dans la visibilité Kinect.

Questions connexes