Kinect SDK 播放器检测

Posted

技术标签:

【中文标题】Kinect SDK 播放器检测【英文标题】:Kinect SDK player detection 【发布时间】: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,因为此时它是第一个检测到的玩家。

有什么解决办法吗?

【问题讨论】:

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

【讨论】:

以上是关于Kinect SDK 播放器检测的主要内容,如果未能解决你的问题,请参考以下文章

当前播放状态的 Spotify Web SDK / Web API 问题

如何检测其他应用程序的音频是不是在后台播放? (UWP,Windows 10)

如何使用Kinect Sensor

支持 Chromecast 的 Android SDK 推荐视频播放器

Ziggeo SDK 视频播放器 - 获取寻道时间 [关闭]

安卓视频播放(阿里云视频点播播放器SDK+SurfaceView)