2012-05-12 32 views
8

Tôi vừa tạo một trò chơi 2 người chơi (như ShapeGame) nhưng vấn đề là khi một trong những người chơi lefts từ cảnh trò chơi, tôi không thể phát hiện cái nào (người chơi nào) rời khỏi trò chơi .Phát hiện máy nghe nhạc Kinect SDK

Hãy nghĩ rằng có 2 ô tô trong trò chơi. Đầu tiên phát hiện máy nghe nhạc (gọi nó player1) sử dụng một trái và player2 sử dụng một trong những quyền. Khi player1 rời khỏi scene, đột nhiên player2 mất quyền kiểm soát của chiếc xe bên trái, và nếu player1 tái tham gia trò chơi, player1 sẽ kiểm soát lại chiếc xe bên trái một lần nữa và player2 nắm quyền điều khiển chiếc xe bên phải.

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

     id++; 
    } 
} 

Vấn đề là chương trình cung cấp cho id = 0 cho người chơi phát hiện đầu tiên (gọi nó là player1) và 1 cho thứ hai phát hiện máy nghe nhạc (gọi nó là player2). Khi player2 lefts từ các trò chơi và tái tham gia, không có vấn đề. Nó lại mất id = 1. nhưng khi player1 lefts từ các trò chơi, player2 mất id = 0 vì nó là người chơi phát hiện đầu tiên tại thời điểm này.

Bất kỳ giải pháp nào?

Trả lời

3

Mỗi người chơi có một chỉ số trong mảng 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]; 

Bạn có thể sử dụng chỉ số để xác định người chơi của bạn nếu một nghỉ và trở lại.
Nhưng nếu cả hai người chơi rời khỏi cảnh Kinect thì không được cấp rằng chỉ mục của người chơi là chính xác khi họ vào lại tầm nhìn Kinect.

Các vấn đề liên quan