public static IEnumerator PennerScaleObject(Transform objectToScale, Vector3 scale, float time, PennerEasingType ease, EasingForm form) { var t = 0f; var newScale = objectToScale.localScale; while (t < 1f) { float easeT; if (form == EasingForm.In) { easeT = PennerEaseIn(t, ease); } else { easeT = PennerEaseOut(t, ease); } objectToScale.localScale = Vector3.Lerp(newScale, scale, easeT); t += Time.deltaTime / time; yield return(null); } objectToScale.localScale = scale; }
public static IEnumerator PennerMoveObject(Transform objectToMove, Vector3 position, float time, PennerEasingType ease, EasingForm form) { var t = 0f; var pos = objectToMove.localPosition; while (t < 1f) { float easeT; if (form == EasingForm.In) { easeT = PennerEaseIn(t, ease); } else { easeT = PennerEaseOut(t, ease); } objectToMove.localPosition = Vector3.Lerp(pos, position, easeT); t += Time.deltaTime / time; yield return(null); } objectToMove.localPosition = position; }
public static IEnumerator ScaleObject(Transform targetObject, Vector3 scale, float time, EasingForm form, EasingType ease) { var t = 0f; var s = targetObject.localScale; while (t < 1f) { if (form == EasingForm.InOut) { targetObject.localScale = Vector3.Lerp(s, scale, EaseInOut(t, ease)); } else if (form == EasingForm.Out) { targetObject.localScale = Vector3.Lerp(s, scale, EaseOut(t, ease)); } else { targetObject.localScale = Vector3.Lerp(s, scale, EaseIn(t, ease)); } t += Time.deltaTime / time; yield return(null); } targetObject.localScale = scale; }
public static IEnumerator RotateObject(Transform objectToMove, Quaternion q, float time, EasingForm form, EasingType ease) { var t = 0f; //float angleDone = 0f; Quaternion qOrg = objectToMove.rotation; while (t < 1f) { //float tAngle = 0.0f; //float tEaseLast = 0.0f; float tEaseNew = 0.0f; if (form == EasingForm.InOut) { tEaseNew = EaseInOut(t, ease); //float tEase = tEaseNew - tEaseLast; //tEaseLast = tEaseNew; //tAngle = angle * tEase; } else if (form == EasingForm.Out) { tEaseNew = EaseOut(t, ease); //float tEase = tEaseNew - tEaseLast; //tEaseLast = tEaseNew; //tAngle = angle * tEase; } else { tEaseNew = EaseIn(t, ease); //float tEase = tEaseNew - tEaseLast; //tEaseLast = tEaseNew; //tAngle = angle * tEase; } //objectToMove.Rotate(axis, tAngle); objectToMove.rotation = Quaternion.Slerp(qOrg, q, tEaseNew); //angleDone += tAngle; t += Time.deltaTime / time; yield return(null); //MPDebug.Log("Rotated: "+tEaseNew); } //MPDebug.Log("Rotated: "+angleDone); objectToMove.rotation = q; //objectToMove.Rotate(axis, angle - angleDone); }
/// <summary> /// Moves an object over a period of time /// </summary> /// <returns> /// A coroutine that moves the object /// </returns> /// <param name='objectToMove'> /// The Transform of the object to move. /// </param> /// <param name='position'> /// The destination position /// </param> /// <param name='time'> /// The number of seconds that the move should take /// </param> /// <param name='ease'> /// The easing function to use when moving the object /// </param> public static IEnumerator MoveObject(Transform objectToMove, Vector3 position, float time, EasingForm form, EasingType ease) { var t = 0f; var pos = objectToMove.localPosition; while (t < 1f) { if (form == EasingForm.InOut) { objectToMove.localPosition = Vector3.Lerp(pos, position, EaseInOut(t, ease)); } else if (form == EasingForm.Out) { objectToMove.localPosition = Vector3.Lerp(pos, position, EaseOut(t, ease)); } else { objectToMove.localPosition = Vector3.Lerp(pos, position, EaseIn(t, ease)); } t += Time.deltaTime / time; yield return(null); } objectToMove.localPosition = position; }