public void GameStart() { retryRemain = RetryMax; gameUIControl.SetLife(retryRemain); score = 0; gameUIControl.SetScore(0); OnStageStart(); }
float timer = 2;// 计时器 void Update() { timer += Time.deltaTime * creatSpeed; if (timer >= creatTime) { // random time to create fruit int num = Random.Range(1, 4); for (int i = 0; i < num; i++) { _currentFruitArray[i] = CreatFruit(); } timer = 0; } bool isRightOverFrult = false; bool isLeftOverFrult = false; if (_manager == null) { _manager = KinectManager.Instance; } for (int i = 0; i < _currentFruitArray.Length; i++) { if (_currentFruitArray[i] != null) { RectTransform rt = _currentFruitArray[i].transform as RectTransform; if (_manager && _manager.IsInitialized()) //如果初始化成功 { #region 检测切割,更新划线 //先检查人物是否被检测 if (_manager.IsUserDetected()) { long userId = _manager.GetPrimaryUserID(); //获取左右手手掌的关节视口坐标 Vector3 leftJointPos = KinectUtils.GetViewportToScreenPoint(KinectInterop.JointType.HandLeft); Vector3 rightJointPos = KinectUtils.GetViewportToScreenPoint(KinectInterop.JointType.HandRight); //将左右手坐标转换为ugui坐标 Vector2 leftHandScreenpos; bool isLeftHandOver = RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, leftJointPos, Camera.main, out leftHandScreenpos); Vector2 rightHandScreenpos; bool isRightHandOver = RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, rightJointPos, Camera.main, out rightHandScreenpos); //左手是否悬浮在区域上 isLeftOverFrult = RectTransformUtility.RectangleContainsScreenPoint(rt, leftJointPos, Camera.main); //右手是否悬浮在区域上 isRightOverFrult = RectTransformUtility.RectangleContainsScreenPoint(rt, rightJointPos, Camera.main); //更新显示线位置 leftLine.UpdateCutLine(leftHandScreenpos); rightLine.UpdateCutLine(rightHandScreenpos); } else { leftLine.UpdateCutLine(new Vector2(-1000, 1000)); rightLine.UpdateCutLine(new Vector2(1000, 1000)); } #endregion } #region 切水果 if (isLeftOverFrult || isRightOverFrult) { int t = _currentFruitArray[i].type; if (t == 0) //切到最终boom { //life = 0; } else //切到水果加分 { scoreNum++; CreatLeftRightFurit(t, _currentFruitArray[i]); } Destroy(_currentFruitArray[i].gameObject); } #endregion } } CountTime(); gameUIControl.SetScore(scoreNum, _allTime); }