public void AniStart(DVoidEventData callback, EventData data) { if (_newTable != null) { StopCoroutine(_newTable); } _newTable = StartCoroutine(NewTableAni(callback, data)); }
IEnumerator NewTableAni(DVoidEventData callback, EventData data) { Transform[] Walls = new Transform[UtilDef.GamePlayerCnt]; for (int i = 0; i < Walls.Length; i++) { Walls[i] = GameTable.WallMj[i].transform; Walls[i].gameObject.SetActive(true); Walls[i].localPosition = WallsAniPos[i]; } //落板 while (Bans.transform.localPosition.y > -0.1f) { Bans.transform.position = new Vector3(0, Bans.transform.position.y - MjSpeed, 0); if (Bans.transform.localPosition.y <= -0.11f) { Bans.transform.localPosition = new Vector3(0, -0.11f, 0); } yield return(new WaitForSeconds(TimeLag)); } yield return(new WaitForSeconds(0.1f)); //牌横移 while (Walls[0].localPosition.z > WallsPos[0].z) { Walls[0].localPosition = new Vector3(Walls[0].localPosition.x, Walls[0].localPosition.y, Walls[0].localPosition.z - MjSpeed); Walls[1].localPosition = new Vector3(Walls[1].localPosition.x + MjSpeed, Walls[1].localPosition.y, Walls[1].localPosition.z); Walls[2].localPosition = new Vector3(Walls[2].localPosition.x, Walls[2].localPosition.y, Walls[2].localPosition.z + MjSpeed); Walls[3].localPosition = new Vector3(Walls[3].localPosition.x - MjSpeed, Walls[3].localPosition.y, Walls[3].localPosition.z); if (Walls[0].localPosition.z <= WallsPos[0].z) { Walls[0].localPosition = new Vector3(Walls[0].localPosition.x, Walls[0].localPosition.y, WallsPos[0].z); Walls[1].localPosition = new Vector3(WallsPos[1].x, Walls[1].localPosition.y, Walls[1].localPosition.z); Walls[2].localPosition = new Vector3(Walls[2].localPosition.x, Walls[2].localPosition.y, WallsPos[2].z); Walls[3].localPosition = new Vector3(WallsPos[3].x, Walls[3].localPosition.y, Walls[3].localPosition.z); } yield return(new WaitForSeconds(TimeLag)); } yield return(new WaitForSeconds(0.1f)); //上升 while (Walls[0].localPosition.y < WallsPos[0].y) { for (int i = 0; i < Walls.Length; i++) { Walls[i].localPosition = new Vector3(Walls[i].localPosition.x, Walls[i].localPosition.y + MjSpeed, Walls[i].localPosition.z); } if (Walls[0].localPosition.y > -0.24f) { Bans.transform.position = new Vector3(0, Bans.transform.position.y + MjSpeed, 0); } if (Walls[0].localPosition.y >= WallsPos[0].y) { for (int i = 0; i < Walls.Length; i++) { Walls[i].localPosition = WallsPos[i]; } Bans.transform.localPosition = new Vector3(0, -0.004f, 0); } yield return(new WaitForSeconds(TimeLag)); } yield return(new WaitForSeconds(0.1f)); callback(data); }