private IEnumerator TransitConsole(float yInit, float yLast, float time, UDEMath.TimeFunction ease, Action lastAction) { consoleStateChangable = false; UDEMath.TimeFunction yFunc = t => yInit + t * (yLast - yInit); yFunc = yFunc.Composite(ease).Composite(t => t / time); float acct = 0; while (true) { acct += Time.deltaTime; Vector3 pos = rectTransform.anchoredPosition3D; pos.y = yFunc(acct); if (acct > time) { pos.y = yLast; } rectTransform.anchoredPosition3D = pos; if (acct > time) { break; } yield return(null); } lastAction.Invoke(); consoleStateChangable = true; yield return(null); }
private IEnumerator RotateCircle(RectTransform circle, float period, float waitTime, float radius) { UDEMath.TimeFunction func = UDETransitionHelper.easeInOutCubic.Composite(t => t / period); float accTime = 0; while (true) { float angle = -90 + 360 * func(accTime); if (accTime > period) angle = 270; (float x, float y) = UDEMath.Polar2Cartesian(radius, angle); circle.anchoredPosition = new Vector2(x, y); accTime += Time.deltaTime; if (accTime > period + waitTime) accTime = 0; yield return null; } }