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); } } }
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; } }