2012-05-12 26 views
8

Acabo de crear un juego de 2 jugadores (como ShapeGame) pero el problema es cuando uno de los jugadores sale de la escena del juego, no puedo detectar cuál (qué jugador) dejó en el juego .Detección de jugador Kinect SDK

Creo que hay 2 coches en el juego. El primer jugador detectado (llámalo jugador 1) usa el izquierdo y el jugador 2 el derecho. Cuando el jugador 1 salió de la escena, de repente el jugador 2 toma el control del auto izquierdo, y si el jugador 1 vuelve a unirse al juego, el jugador 1 retoma el control del auto izquierdo y el jugador 2 toma el control del auto derecho.

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

     id++; 
    } 
} 

La cosa es el programa da id = 0 para el jugador primero detectado (llamarlo jugador1) y 1 para el segundo detecta jugador (llámese jugador2). Cuando jugador2 sale del juego y vuelve a unirse, no hay problema. De nuevo toma id = 1. pero cuando el jugador 1 sale del juego, el jugador 2 toma id = 0 porque es el primer jugador detectado en este punto.

¿Alguna solución?

Respuesta

3

Cada jugador tiene un índice de la matriz Esqueleto:

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

puede utilizar ese índice para identificar a los jugadores si se licencia y vuelve.
Pero si ambos jugadores dejan la vista del Kinect no se concede que el índice del jugador sea correcto cuando vuelvan a entrar en la visibilidad de Kinect.

Cuestiones relacionadas