Kinect SDK 播放器检测

本文关键字:检测 播放器 SDK Kinect | 更新日期: 2023-09-27 18:33:53

我刚刚创建了一个 2 人游戏(如 ShapeGame),但问题是当其中一个玩家离开游戏场景时,我无法检测到哪个玩家(哪个玩家)离开了游戏。

认为游戏中有 2 辆车。第一个检测到的玩家(称为玩家 1)使用左边的,玩家 2 使用右边的。当玩家 1 离开场景时,玩家 2 突然控制了左车,如果玩家 1 重新加入游戏,玩家 1 再次夺回左车的控制权,玩家 2 控制右车。

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

问题是程序为第一个检测到的玩家(称为 player1)提供id = 0,为第二个检测到的玩家(称为 player2)提供 1。当玩家 2 离开游戏并重新加入时,没有问题。再次需要id = 1.但是当玩家 1 离开游戏时,玩家 2 会接受id = 0因为它是此时第一个检测到的玩家。

有什么解决办法吗?

Kinect SDK 播放器检测

每个玩家在骨架数组中都有一个索引:

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