IEnumerator LevelCompositionCoroutine() { int iCurrentObjectLeft = vObjects.Count; GLOBALS.Player1.Hide(); GLOBALS.Player2.Hide(); UnityEditor.Selection.activeObject = GLOBALS.Player2.transform.GetChild(0).gameObject; while (iCurrentObjectLeft > 0) { for (int i = 0; i < vObjects.Count; i++) { GO_Position p = vObjects[i]; if (p.Done) { continue; } p.Interpolant += Time.unscaledDeltaTime / p.Distance * 50f; if (p.Interpolant > 1.0f) { p.Done = true; iCurrentObjectLeft--; print(iCurrentObjectLeft); } p.obj.transform.position = Vector3.Lerp(p.Decom_Position, p.Original_Position, p.Interpolant); } yield return(null); } for (int i = 0; i < vObjects.Count; i++) { vObjects[i].Done = false; } GLOBALS.Player1.Show(); GLOBALS.Player2.Show(); GLOBALS.Player1.Spawn(); GLOBALS.Player2.Spawn(); bInLevelTransition = false; }
IEnumerator LevelDecompositionCoroutine() { bInLevelTransition = true; int iCurrentObjectLeft = vObjects.Count; yield return(new WaitForSecondsRealtime(1.0f)); while (iCurrentObjectLeft > 0) { for (int i = 0; i < vObjects.Count; i++) { GO_Position p = vObjects[i]; if (p.Done) { continue; } p.Interpolant += Time.unscaledDeltaTime / p.Distance * 200f; if (p.Interpolant > 1.0f) { p.Done = true; p.Interpolant = 0.0f; iCurrentObjectLeft--; print(iCurrentObjectLeft); } p.obj.transform.position = Vector3.Lerp(p.Original_Position, p.Decom_Position, p.Interpolant); } yield return(null); } GLOBALS.Player1.Hide(); GLOBALS.Player2.Hide(); }
private void AddObj(GameObject o) { Vector3 vDecom_Position = Camera.main.ViewportToWorldPoint( new Vector3( Random.Range(1.1f, 3.5f) * (Random.Range(0, 100) > 50 ? 1 : -1), Random.Range(1.1f, 3.5f) * (Random.Range(0, 100) > 50 ? 1 : -1), Random.Range(1.1f, 3.5f) * (Random.Range(0, 100) > 50 ? 1 : -1) ) ); /* * Vector3 vDecom_Position = new Vector3 ( * Random.Range( -0.2f, 0.3f ) * vObjects.Count + Random.Range( -20, 21 ), * 0.0f, * Random.Range( -0.2f, 0.3f ) * vObjects.Count + Random.Range( -20, 21 ) * ); */ GO_Position p = new GO_Position(o, o.transform.position, vDecom_Position); p.Distance = Vector3.Distance(o.transform.position, vDecom_Position); vObjects.Add(p); o.transform.position = vDecom_Position; }