コード例 #1
0
            private void OnDetectHand(KinectHandInteract handInteract, long userID)
            {
                handInteract.OnHandInteracting(userID);

                if (handInteract.IsHandInteracting)
                {
                    if (!IsHandActive(handInteract.handIndex))
                    {
                        MLog.WriteLog(userID + "用户检测到手启动——OnDetectHand(),手编号:" + handInteract.handIndex);
                        StartHand(handInteract.handIndex);
                    }
                }
                else
                {
                    if (IsHandActive(handInteract.handIndex))
                    {
                        MLog.WriteLog(userID + "用户检测到手停止——OnDetectHand(),手编号:" + handInteract.handIndex);
                        StopHand(handInteract.handIndex);
                    }
                }
            }
コード例 #2
0
            public void StartDetectHand(long userID, UserManager userManager, KinectHandInteract rightHand, KinectHandInteract leftHand)
            {
                KinectManager kinectManager = KinectManager.Instance;

                //这里的代码是从Kinect SDK的 InteractionManager.cs 复制过来的,用于判断用户是否举起一只手。最终用到的是isLeftHandInteracting和isRightHandInteracting两个bool值。

                leftHand.OnHandInteracting(userID);
                rightHand.OnHandInteracting(userID);

                //判断条件:1.当前没有操作用户。2.当前用户不是操作用户。3.后来加的,只有检测区域的用户才识别。
                if ((UserID == 0 || UserID != userID) && userManager.IsUserNear(userID))
                {
                    OnDetechHand(userID, userManager, rightHand, leftHand);
                    return;
                }

                if (UserID == userID)
                {
                    OnChangeHand(userID, userManager, rightHand, leftHand);
                    return;
                }
            }