Ejemplo n.º 1
0
 void rotate()
 {
     if (m_bRotate)
     {
         transform.Rotate(0, 0, 30);
         m_nRotateRange += 30;
         for (int i = 0; i < m_aCubes.Count; i++)
         {
             GameObject g      = (GameObject)m_aCubes[i];
             CCube      script = (CCube)g.GetComponent(typeof(CCube));
             script.rotate();
         }
     }
     if (m_nRotateRange % 90 == 0)
     {
         m_bRotate      = false;
         m_nRotateRange = 0;
     }
 }
Ejemplo n.º 2
0
    void createMask()
    {
        GameObject player = GameObject.FindGameObjectWithTag("Player");
        CPlayer    script = (CPlayer)player.GetComponent(typeof(CPlayer));

        ArrayList aCubes = script.m_aCubes;

        for (int i = 0; i < aCubes.Count; i++)
        {
            GameObject cube        = (GameObject)aCubes [i];
            CCube      cube_script = (CCube)cube.GetComponent(typeof(CCube));

            int        nRows = (int)(cube_script.m_NoChangePos.y - 0.5f);
            int        nCols = (int)(cube_script.m_NoChangePos.x - m_fStartPosX);
            int        index = nRows * m_nCols + nCols;
            GameObject quad  = (GameObject)m_aQuads [index];
            quad.renderer.enabled   = false;
            quad.collider.isTrigger = true;
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 创建一个格子
    /// </summary>
    /// <returns></returns>
    public SGrid CreateGrid()
    {
        SGrid      grid   = new SGrid();
        GameObject Upper  = CreateCube();
        GameObject Downer = CreateCube();

        Upper.layer  = LayerMask.NameToLayer("UpperCube");
        Downer.layer = LayerMask.NameToLayer("FloorCube");

        CCube UpperCube  = Upper.AddComponent <CCube>();
        CCube DownerCube = Downer.AddComponent <CCube>();

        int   xpos = _nowGridIndex * 2;
        float zpos = 0f;
        int   ypos;
        int   SafeOffset;

        if (_nowGridIndex < SAFE_GRID_COUNT)
        {
            //前10个Y轴固定为10
            ypos             = 9;
            SafeOffset       = 2;
            UpperCube.IsSafe = true;
        }
        else
        {
            //后面的依照前面的进行偏移
            int offset = CMath.Rand(-2, 3);
            ypos = _lastYPos + offset;

            bool isSafe = CheckIsSafe();

            if (isSafe)
            {
                _lastSafeIndex = _nowGridIndex;
            }

            UpperCube.IsSafe = isSafe;
            SafeOffset       = isSafe ? CMath.Rand(1, 3) : 0;
        }

        _lastYPos = ypos;

        //下方 目标坐标
        int downTargetPosY = ypos - 10;

        //上方 目标坐标
        int upTargetPosY = ypos + 10 + SafeOffset;

        //下方 开始坐标
        int downStartPosY = downTargetPosY - 3;

        //上方开始坐标
        int upStartPosY = upTargetPosY + 3;

        Upper.transform.position  = new Vector3(xpos, upStartPosY, zpos);
        Downer.transform.position = new Vector3(xpos, downStartPosY, zpos);

        Upper.transform.SetParent(Root_Upper);
        Downer.transform.SetParent(Root_Downer);

        UpperCube.SetInfo(upStartPosY, upTargetPosY);
        DownerCube.SetInfo(downStartPosY, downTargetPosY);

        grid._UpperCube  = Upper;
        grid._DownerCube = Downer;

        _nowGridIndex++;

        return(grid);
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 合拢操作
    /// </summary>
    /// <returns></returns>
    private IEnumerator GridClose()
    {
        float minInteval = CConfig.GetValue("move_in_inteval_min");
        float maxInteval = CConfig.GetValue("move_in_inteval_max");

        float minWait = CConfig.GetValue("move_in_wait_min");
        float maxWait = CConfig.GetValue("move_in_wait_max");

        while (true)
        {
            //等待一定时间
            yield return(new WaitForSeconds(CMath.Rand(minInteval, maxInteval)));

            //设置不允许掉落尾巴上的格子
            CanDestroyPeekGrid = false;

            //振动上方格子
            for (int i = 0; i < Root_Upper.childCount; i++)
            {
                Root_Upper.GetChild(i).DOShakePosition(1f, 0.1f, 30, 90, false, true);
            }

            //等待1秒
            yield return(new WaitForSeconds(1f));

            //上下格子合拢
            for (int i = 0; i < Root_Upper.childCount; i++)
            {
                CCube Down = Root_Upper.GetChild(i).GetComponent <CCube>();
                CCube up   = Root_Downer.GetChild(i).GetComponent <CCube>();

                Down.MoveIn();
                up.MoveIn();
            }

            yield return(new WaitForSeconds(0.8f));

            IsDangerous = true;

            yield return(new WaitForSeconds(0.8f));

            IsDangerous = false;

            //随机等待一定时间
            yield return(new WaitForSeconds(CMath.Rand(minWait, maxWait) - 0.6f));

            //上方格子震动
            for (int i = 0; i < Root_Upper.childCount; i++)
            {
                Root_Upper.GetChild(i).DOShakePosition(1f, 0.1f, 30, 90, false, true);
            }

            //等待1秒
            yield return(new WaitForSeconds(1f));

            //格子分开
            for (int i = 0; i < Root_Upper.childCount; i++)
            {
                CCube Down = Root_Upper.GetChild(i).GetComponent <CCube>();
                CCube up   = Root_Downer.GetChild(i).GetComponent <CCube>();

                Down.MoveOut();
                up.MoveOut();
            }

            //等待1秒
            yield return(new WaitForSeconds(1f));

            //设置尾巴上的格子可以掉落
            CanDestroyPeekGrid = false;
        }
    }