8

我刚刚创建了一个 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)和第二个检测到的玩家(称为player2)提供1。当玩家2离开游戏并重新加入时,没有问题。它再次需要id = 1。但是当player1离开游戏时,player2会id = 0因为它是此时第一个检测到的玩家。

有什么解决办法吗?

4

1 回答 1

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

于 2012-05-12T09:36:51.083 回答