【问题标题】:Kinect SDK player detectionKinect SDK 播放器检测
【发布时间】:2012-05-12 09:33:26
【问题描述】:

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

认为游戏中有 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++;
    }
}

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

有什么解决办法吗?

【问题讨论】:

    标签: c# kinect


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      相关资源
      最近更新 更多