2012-05-12 3 views
8

Я только что создал игру с двумя игроками (например, ShapeGame) , но проблема в том, что один из игроков ушел из игровой сцены, я не могу определить, какой из них (какой игрок) ушел из игры ,Обнаружение игрока Kinect SDK

Думайте, что в игре есть 2 машины. Первый обнаруженный игрок (назовите его player1) использует левый, а игрок2 использует правый. Когда игрок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

Каждый игрок имеет индекс в массиве 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]; 

Вы можете использовать этот индекс для идентификации ваших игроков, если один отпуск и возвращается обратно.
Но если оба игрока покидают поле зрения Kinect, то не подтверждается, что индекс игрока верен, когда они снова попадают в видимость Kinect.

Смежные вопросы