Esempio n. 1
0
    public void GameStart()
    {
        retryRemain = RetryMax;
        gameUIControl.SetLife(retryRemain);

        score = 0;
        gameUIControl.SetScore(0);

        OnStageStart();
    }
Esempio n. 2
0
    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);
    }