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