public static void FadeInActiveFades(float dur, EaseStyle ease = EaseStyle.LinearEaseIn) { foreach(var f in _fades) { f.FadeIn(dur, ease); } }
public static IEnumerator To(float start, float end, float dur, EaseStyle ease, Action <float> OnUpdate, Action OnComplete = null) { float t = 0f; while (t < dur) { float sc = EasedLerp(start, end, t / dur, ease); OnUpdate?.Invoke(sc); yield return(null); t += Time.deltaTime; } OnUpdate.Invoke(end); OnComplete?.Invoke(); }
public void FadeIn(float dur, EaseStyle ease = EaseStyle.LinearEaseIn, bool destroyOnComplete = true) { if (!_active) throw new System.InvalidOperationException("Cannot FadeIn a CameraFade that isnot currently faded out."); if (_tween != null) { _tween.Stop(); _tween = null; } _totalDuration = dur; _direction = -1; _tween = SPTween.Tween(this.OnTweenStep, dur) .Use(_timeSupplier ?? SPTime.Real) .OnFinish(this.OnFadeInComplete) .Play(false); }
public void FadeOut(float dur, EaseStyle ease = EaseStyle.LinearEaseOut) { _active = true; _fades.Add(this); if (_tween != null) { _tween.Stop(); _tween = null; } _totalDuration = dur; _direction = 1; if(dur <= 0f) { this.OnFadeOutComplete(null, null); } else { _tween = SPTween.Tween(this.OnTweenStep, dur) .Use(_timeSupplier ?? SPTime.Real) .OnFinish(this.OnFadeOutComplete) .Play(false); } }
public void FadeOut(float dur, EaseStyle ease = EaseStyle.LinearEaseOut) { _active = true; _fades.Add(this); if (_tween != null) { _tween.Stop(); _tween = null; } _totalDuration = dur; _direction = 1; if(dur <= 0f) { this.OnFadeOutComplete(null, null); } else { _tween = SPTween.Tween(this.OnTweenStep, dur) .Use(_timeSupplier ?? SPTime.Real) .OnFinish(this.OnFadeOutComplete) .Play(); } }
IEnumerator Shaking(Transform _transform, Vector3 magnetude, float duration, float motion, bool isSexy = false, bool isIgnoreTimeScale = false, EaseStyle easeStyle = EaseStyle.QuadEaseOut) { float lifeTime = duration; float age = lifeTime; Vector3 offset = Vector3.zero; Vector2 seedX = Vector2Extension.RandomInSqaure * 10f; Vector2 seedY = Vector2Extension.RandomInSqaure * 10f; Vector2 seedZ = Vector2Extension.RandomInSqaure * 10f; Vector2 motionVectX = Vector2Extension.RandomOnCircle * motion; Vector2 motionVectY = Vector2Extension.RandomOnCircle * motion; Vector2 motionVectZ = Vector2Extension.RandomOnCircle * motion; while (_transform != null & age > 0) { _transform.position -= offset; float deltaTime = (isIgnoreTimeScale) ? Time.unscaledDeltaTime : Time.deltaTime; age -= deltaTime; float power = (age / lifeTime); power *= EaseUtility.EasedLerp(0f, 1f, power, easeStyle); seedX += ((isSexy) ? motionVectX * power : motionVectX) * deltaTime; seedY += ((isSexy) ? motionVectY * power : motionVectY) * deltaTime; seedZ += ((isSexy) ? motionVectZ * power : motionVectZ) * deltaTime; offset = new Vector3( Mathf.PerlinNoise(seedX.x, seedX.y), Mathf.PerlinNoise(seedY.x, seedY.y), Mathf.PerlinNoise(seedZ.x, seedZ.y)); //***** Center the noise signal ***** offset -= Vector3.one * 0.5f; offset *= 2f; offset *= power; offset = new Vector3( offset.x * magnetude.x, offset.y * magnetude.y, offset.z * magnetude.z); //***** Center the noise signal ***** _transform.position += offset; yield return(null); } if (_transform != null) { _transform.position -= offset; } yield break; }
/// <summary> /// /// </summary> /// <param name="transform"></param> /// <param name="magnetude"></param> /// <param name="duration"></param> /// <param name="motion"> Perlin 在 Sameple 時遊走的速度。白話文:震度速率。 </param> /// <param name="isSexy"> Motion 會不會隨著時間遞減/削弱!白話文:會不會漸緩。 </param> /// <param name="isIgnoreTimeScale"></param> /// <param name="easeStyle"></param> /// <returns></returns> public static Coroutine ShakePosition(Transform transform, Vector3 magnetude, float duration, float motion, bool isSexy = false, bool isIgnoreTimeScale = false, EaseStyle easeStyle = EaseStyle.QuadEaseOut) { return(Instance.StartCoroutine(Instance.Shaking(transform, magnetude, duration, motion, isSexy, isIgnoreTimeScale))); }
/// <summary> /// 回傳一個可被 yield return 的協程,做一個由 0 至 1 的 tween 並每個 update 去執行 action,float 則是 progress /// </summary> /// <param name="duration"></param> /// <param name="progressAction"></param> /// <param name="easeType"></param> /// <returns></returns> public static YieldInstruction ProgressionTask(float duration, System.Action <float> progressAction, EaseStyle easeType = EaseStyle.Linear) { return(CoroutineManager.instance.StartCoroutine(EaseUtility.To(0, 1, duration, easeType, progressAction, null))); }
IEnumerator ChangeTextAnimation(string text, Vector3 startScale, float animationDuration, EaseStyle animationEaseType) { SetTextInstant(text); textComponent.color = new Color(textComponent.color.r, textComponent.color.g, textComponent.color.b, 0); if (scaleTarget == ScaleTarget.Self) { textComponent.transform.localScale = startScale; } else { textComponent.transform.parent.localScale = startScale; } float progress = 0; while (progress < animationDuration) { progress += Time.deltaTime; float param = progress / animationDuration; SetTextLerpView(param); yield return(null); } SetTextLerpView(1); }
public static Vector2 EasedLerp(Vector2 from, Vector2 to, float t, EaseStyle easeStyle) { return(new Vector2(EasedLerp(from.x, to.x, t, easeStyle), EasedLerp(from.y, to.y, t, easeStyle))); }
public static Vector3 EasedLerp(Vector3 from, Vector3 to, float t, EaseStyle easeStyle) { return(new Vector3(EasedLerp(from.x, to.x, t, easeStyle), EasedLerp(from.y, to.y, t, easeStyle), EasedLerp(from.z, to.z, t, easeStyle))); }
public static float EasedLerp(float from, float to, float t, EaseStyle easeStyle) { var f = Get(easeStyle); return(f(t, from, to - from, 1f)); }
public void FadeIn(float dur, EaseStyle ease = EaseStyle.LinearEaseIn, bool destroyOnComplete = true) { if (!_active) throw new System.InvalidOperationException("Cannot FadeIn a CameraFade that isnot currently faded out."); if (_tween != null) { _tween.Stop(); _tween = null; } _totalDuration = dur; _direction = -1; _tween = SPTween.Tween(this.OnTweenStep, dur) .Use(_timeSupplier ?? SPTime.Real) .OnFinish(this.OnFadeInComplete) .Play(); }
public Coroutine PlayAnimation(Vector3 startScale, float animationDuration, EaseStyle animationEaseType, bool isPlayParticle = true) { return(SetTextAnimation(textComponent.text, startScale, animationDuration, animationEaseType, isPlayParticle)); }
public Coroutine SetTextAnimation(string text, Vector3 startScale, float animationDuration, EaseStyle animationEaseType, bool isPlayParticle) { if (currentTextCoroutine != null) { StopCoroutine(currentTextCoroutine); } if (_particleToPlay != null) { _particleToPlay.Play(); } // if (_sfxToPlay != null) // AudioManager.PlaySFX(_sfxToPlay); currentTextCoroutine = CoroutineManager.Instance.StartCoroutine(ChangeTextAnimation(text, startScale, animationDuration, animationEaseType)); return(currentTextCoroutine); }
static EaseDelegate Get(EaseStyle style) { switch (style) { case EaseStyle.Linear: return(LinearEaseNone); case EaseStyle.LinearEaseIn: return(LinearEaseIn); case EaseStyle.LinearEaseOut: return(LinearEaseOut); case EaseStyle.LinearEaseInOut: return(LinearEaseInOut); case EaseStyle.BackEaseIn: return(BackEaseIn); case EaseStyle.BackEaseOut: return(BackEaseOut); case EaseStyle.BackEaseInOut: return(BackEaseInOut); case EaseStyle.BounceEaseIn: return(BounceEaseIn); case EaseStyle.BounceEaseOut: return(BounceEaseOut); case EaseStyle.BounceEaseInOut: return(BounceEaseInOut); case EaseStyle.CircleEaseIn: return(CircleEaseIn); case EaseStyle.CircleEaseOut: return(CircleEaseOut); case EaseStyle.CircleEaseInOut: return(CircleEaseInOut); case EaseStyle.CubicEaseIn: return(CubicEaseIn); case EaseStyle.CubicEaseOut: return(CubicEaseOut); case EaseStyle.CubicEaseInOut: return(CubicEaseInOut); case EaseStyle.ElasticEaseIn: return(ElasticEaseIn); case EaseStyle.ElasticEaseOut: return(ElasticEaseOut); case EaseStyle.ElasticEaseInOut: return(ElasticEaseInOut); case EaseStyle.ExpoEaseIn: return(ExpoEaseIn); case EaseStyle.ExpoEaseOut: return(ExpoEaseOut); case EaseStyle.ExpoEaseInOut: return(ExpoEaseInOut); case EaseStyle.QuadEaseIn: return(QuadEaseIn); case EaseStyle.QuadEaseOut: return(QuadEaseOut); case EaseStyle.QuadEaseInOut: return(QuadEaseInOut); case EaseStyle.QuartEaseIn: return(QuartEaseIn); case EaseStyle.QuartEaseOut: return(QuartEaseOut); case EaseStyle.QuartEaseInOut: return(QuartEaseInOut); case EaseStyle.QuintEaseIn: return(QuintEaseIn); case EaseStyle.QuintEaseOut: return(QuintEaseOut); case EaseStyle.QuintEaseInOut: return(QuintEaseInOut); case EaseStyle.SineEaseIn: return(SineEaseIn); case EaseStyle.SineEaseOut: return(SineEaseOut); case EaseStyle.SineEaseInOut: return(SineEaseInOut); case EaseStyle.StrongEaseIn: return(StrongEaseIn); case EaseStyle.StrongEaseOut: return(StrongEaseOut); case EaseStyle.StrongEaseInOut: return(StrongEaseInOut); } return(null); }
public static Ease GetEase(EaseStyle style) { switch (style) { case EaseStyle.Linear: return(EaseMethods.LinearEaseNone); case EaseStyle.LinearEaseIn: return(EaseMethods.LinearEaseIn); case EaseStyle.LinearEaseOut: return(EaseMethods.LinearEaseOut); case EaseStyle.LinearEaseInOut: return(EaseMethods.LinearEaseInOut); case EaseStyle.BackEaseIn: return(EaseMethods.BackEaseIn); case EaseStyle.BackEaseOut: return(EaseMethods.BackEaseOut); case EaseStyle.BackEaseInOut: return(EaseMethods.BackEaseInOut); case EaseStyle.BounceEaseIn: return(EaseMethods.BounceEaseIn); case EaseStyle.BounceEaseOut: return(EaseMethods.BounceEaseOut); case EaseStyle.BounceEaseInOut: return(EaseMethods.BounceEaseInOut); case EaseStyle.CircleEaseIn: return(EaseMethods.CircleEaseIn); case EaseStyle.CircleEaseOut: return(EaseMethods.CircleEaseOut); case EaseStyle.CircleEaseInOut: return(EaseMethods.CircleEaseInOut); case EaseStyle.CubicEaseIn: return(EaseMethods.CubicEaseIn); case EaseStyle.CubicEaseOut: return(EaseMethods.CubicEaseOut); case EaseStyle.CubicEaseInOut: return(EaseMethods.CubicEaseInOut); case EaseStyle.ElasticEaseIn: return(EaseMethods.ElasticEaseIn); case EaseStyle.ElasticEaseOut: return(EaseMethods.ElasticEaseOut); case EaseStyle.ElasticEaseInOut: return(EaseMethods.ElasticEaseInOut); case EaseStyle.ExpoEaseIn: return(EaseMethods.ExpoEaseIn); case EaseStyle.ExpoEaseOut: return(EaseMethods.ExpoEaseOut); case EaseStyle.ExpoEaseInOut: return(EaseMethods.ExpoEaseInOut); case EaseStyle.QuadEaseIn: return(EaseMethods.QuadEaseIn); case EaseStyle.QuadEaseOut: return(EaseMethods.QuadEaseOut); case EaseStyle.QuadEaseInOut: return(EaseMethods.QuadEaseInOut); case EaseStyle.QuartEaseIn: return(EaseMethods.QuartEaseIn); case EaseStyle.QuartEaseOut: return(EaseMethods.QuartEaseOut); case EaseStyle.QuartEaseInOut: return(EaseMethods.QuartEaseInOut); case EaseStyle.QuintEaseIn: return(EaseMethods.QuintEaseIn); case EaseStyle.QuintEaseOut: return(EaseMethods.QuintEaseOut); case EaseStyle.QuintEaseInOut: return(EaseMethods.QuintEaseInOut); case EaseStyle.SineEaseIn: return(EaseMethods.SineEaseIn); case EaseStyle.SineEaseOut: return(EaseMethods.SineEaseOut); case EaseStyle.SineEaseInOut: return(EaseMethods.SineEaseInOut); case EaseStyle.StrongEaseIn: return(EaseMethods.StrongEaseIn); case EaseStyle.StrongEaseOut: return(EaseMethods.StrongEaseOut); case EaseStyle.StrongEaseInOut: return(EaseMethods.StrongEaseInOut); } return(null); }
public static Ease GetEase(EaseStyle style) { switch (style) { case EaseStyle.Linear: return EaseMethods.LinearEaseNone; case EaseStyle.LinearEaseIn: return EaseMethods.LinearEaseIn; case EaseStyle.LinearEaseOut: return EaseMethods.LinearEaseOut; case EaseStyle.LinearEaseInOut: return EaseMethods.LinearEaseInOut; case EaseStyle.BackEaseIn: return EaseMethods.BackEaseIn; case EaseStyle.BackEaseOut: return EaseMethods.BackEaseOut; case EaseStyle.BackEaseInOut: return EaseMethods.BackEaseInOut; case EaseStyle.BounceEaseIn: return EaseMethods.BounceEaseIn; case EaseStyle.BounceEaseOut: return EaseMethods.BounceEaseOut; case EaseStyle.BounceEaseInOut: return EaseMethods.BounceEaseInOut; case EaseStyle.CircleEaseIn: return EaseMethods.CircleEaseIn; case EaseStyle.CircleEaseOut: return EaseMethods.CircleEaseOut; case EaseStyle.CircleEaseInOut: return EaseMethods.CircleEaseInOut; case EaseStyle.CubicEaseIn: return EaseMethods.CubicEaseIn; case EaseStyle.CubicEaseOut: return EaseMethods.CubicEaseOut; case EaseStyle.CubicEaseInOut: return EaseMethods.CubicEaseInOut; case EaseStyle.ElasticEaseIn: return EaseMethods.ElasticEaseIn; case EaseStyle.ElasticEaseOut: return EaseMethods.ElasticEaseOut; case EaseStyle.ElasticEaseInOut: return EaseMethods.ElasticEaseInOut; case EaseStyle.ExpoEaseIn: return EaseMethods.ExpoEaseIn; case EaseStyle.ExpoEaseOut: return EaseMethods.ExpoEaseOut; case EaseStyle.ExpoEaseInOut: return EaseMethods.ExpoEaseInOut; case EaseStyle.QuadEaseIn: return EaseMethods.QuadEaseIn; case EaseStyle.QuadEaseOut: return EaseMethods.QuadEaseOut; case EaseStyle.QuadEaseInOut: return EaseMethods.QuadEaseInOut; case EaseStyle.QuartEaseIn: return EaseMethods.QuartEaseIn; case EaseStyle.QuartEaseOut: return EaseMethods.QuartEaseOut; case EaseStyle.QuartEaseInOut: return EaseMethods.QuartEaseInOut; case EaseStyle.QuintEaseIn: return EaseMethods.QuintEaseIn; case EaseStyle.QuintEaseOut: return EaseMethods.QuintEaseOut; case EaseStyle.QuintEaseInOut: return EaseMethods.QuintEaseInOut; case EaseStyle.SineEaseIn: return EaseMethods.SineEaseIn; case EaseStyle.SineEaseOut: return EaseMethods.SineEaseOut; case EaseStyle.SineEaseInOut: return EaseMethods.SineEaseInOut; case EaseStyle.StrongEaseIn: return EaseMethods.StrongEaseIn; case EaseStyle.StrongEaseOut: return EaseMethods.StrongEaseOut; case EaseStyle.StrongEaseInOut: return EaseMethods.StrongEaseInOut; } return null; }