private IEnumerator AnimateFromCornerWithoutScale_HIDE() { if (animationHideDuration <= 0) { yield break; } Vector3 startPos = initialWorldPosition; Vector3 targetPosition = AiryUIAnimationPositions.GetStartPositionFromCorner(initialWorldPosition, rectTransform, animationToCornerType, animationFromCornerStartFromType); rectTransform.position = startPos; if (withDelay) { yield return(new WaitForSeconds(hideDelay)); } float startTime = Time.time; while (Time.time <= startTime + animationHideDuration) { float t = (Time.time - startTime) / animationHideDuration; rectTransform.position = Vector3.Lerp(startPos, targetPosition, t); yield return(null); } rectTransform.position = targetPosition; if (OnHideComplete != null) { OnHideComplete.Invoke(); } }
private IEnumerator AnimateToCornerWithScale_HIDE() { if (animationHideDuration <= 0) yield break; Graphic[] images; if (fadeChildren) images = GetComponentsInChildren<Graphic>(); else images = GetComponents<Graphic>(); Color[] startColors = new Color[images.Length]; Color[] endColors = new Color[images.Length]; for (int i = 0; i < images.Length; i++) { startColors[i] = initialColorsOfChildren[i]; endColors[i] = images[i].color; endColors[i].a = 0; } Vector3 startPos = initialWorldPosition; Vector3 targetPosition = AiryUIAnimationPositions.GetStartPositionFromCorner(initialWorldPosition, rectTransform, animationToCornerType, animationFromCornerStartFromType); rectTransform.position = startPos; if (withDelay) yield return (new WaitForSeconds(hideDelay)); float startTime = Time.time; while (Time.time <= startTime + animationHideDuration) { float t = (Time.time - startTime) / animationHideDuration; rectTransform.position = Vector3.Lerp(startPos, targetPosition, t); rectTransform.localScale = Vector3.Lerp(Vector3.one, Vector3.zero, t); for (int i = 0; i < images.Length; i++) { images[i].color = Color.Lerp(startColors[i], endColors[i], t); } yield return (null); } rectTransform.position = targetPosition; rectTransform.localScale = Vector3.zero; for (int i = 0; i < images.Length; i++) { images[i].color = endColors[i]; } if (OnHideComplete != null) OnHideComplete.Invoke(); }
private IEnumerator AnimateFromCornerWithoutScale_SHOW() { if (animationShowDuration <= 0) { yield break; } ResetPosition(); ResetScale(ResetOptions.Zero); ResetColor(ResetOptions.Zero); #region Initialization Part Vector3 startPos = AiryUIAnimationPositions.GetStartPositionFromCorner(initialWorldPosition, rectTransform, animationFromCornerType, AnimationFromCornerStartFromType.Screen); Vector3 targetPosition = initialWorldPosition; rectTransform.position = startPos; #endregion if (withDelay) { yield return(new WaitForSeconds(showDelay)); } ResetPosition(); ResetScale(ResetOptions.One); ResetColor(ResetOptions.One); // Starting animating. float startTime = Time.time; rectTransform.position = startPos; while (Time.time <= startTime + animationShowDuration) { float t = (Time.time - startTime) / animationShowDuration; // Here we Lerp the position and the scale as well. rectTransform.position = Vector3.Lerp(startPos, targetPosition, t); yield return(null); } // Here we set the values to their end so we avoid the missing final step. rectTransform.position = targetPosition; if (OnShowComplete != null) { OnShowComplete.Invoke(); } }
private IEnumerator AnimateFromCornerWithScale_SHOW() { if (animationShowDuration <= 0) { yield break; } ResetPosition(); ResetScale(ResetOptions.Zero); ResetColor(ResetOptions.Zero); #region Initialization Part Graphic[] imagesInMenu = GetComponentsInChildren <Graphic>(); // Here we get start color to a color with alpha = 0, and the end color to a color with alpha = 1. Color[] startColors = new Color[imagesInMenu.Length]; Color[] endColors = new Color[imagesInMenu.Length]; for (int i = 0; i < graphics.Length; i++) { startColors[i] = graphics[i].color; startColors[i].a = 0; endColors[i] = initialColorsOfChildren[i]; } Vector3 startPos = AiryUIAnimationPositions.GetStartPositionFromCorner(initialWorldPosition, rectTransform, animationFromCornerType, AnimationFromCornerStartFromType.Screen); Vector3 targetPosition = initialWorldPosition; rectTransform.position = startPos; #endregion if (withDelay) { yield return(new WaitForSeconds(showDelay)); } // Starting animating. rectTransform.position = startPos; float startTime = Time.time; while (Time.time <= startTime + animationShowDuration) { float t = (Time.time - startTime) / animationShowDuration; // Here we Lerp the position and the scale as well. rectTransform.position = Vector3.Lerp(startPos, targetPosition, t); rectTransform.localScale = Vector3.Lerp(Vector3.zero, Vector3.one, t); // Here we lerp the color from totally transparent to totally visible. for (int i = 0; i < imagesInMenu.Length; i++) { imagesInMenu[i].color = Color.Lerp(startColors[i], endColors[i], t); } yield return(null); } // Here we set the values to their end so we avoid the missing final step. rectTransform.position = targetPosition; rectTransform.localScale = Vector3.one; for (int i = 0; i < imagesInMenu.Length; i++) { imagesInMenu[i].color = endColors[i]; } if (OnShowComplete != null) { OnShowComplete.Invoke(); } }