Kinect SDK播放器检测

时间:2012-05-12 09:33:27

标签: c# kinect

我刚刚创建了一个2人游戏(比如ShapeGame) ,但问题是当其中一个玩家从游戏场景中出来时,我无法察觉哪个玩家离开游戏

认为游戏中有2辆车。首先检测到的玩家(称之为player1)使用左侧玩家,玩家2使用右侧玩家。当player1离开场景时,突然player2控制左车,如果player1重新加入游戏,则player1再次取回对左车的控制权,且player2控制右车。

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

        id++;
    }
}

事情是程序给第一个检测到的玩家id = 0(称之为player1),第二个检测到的玩家为1(称之为玩家2)。当player2从游戏中退出并重新加入时,没有问题。它再次需要id = 1。但是当玩家1离开游戏时,玩家2需要id = 0,因为它是此时第一个被检测到的玩家。

任何解决方案?

1 个答案:

答案 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可见性时,玩家索引是不正确的。