Skip to content

rakkarage/Ease

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Ease

Simple Unity Easing

The following easing functions are available for various animation effects:

public enum EaseType
{
    Linear,
    SineIn, SineOut, SineInOut,
    QuadIn, QuadOut, QuadInOut,
    CubicIn, CubicOut, CubicInOut,
    QuartIn, QuartOut, QuartInOut,
    QuintIn, QuintOut, QuintInOut,
    ExpoIn, ExpoOut, ExpoInOut,
    CircIn, CircOut, CircInOut,
    BackIn, BackOut, BackInOut,
    ElasticIn, ElasticOut, ElasticInOut,
    BounceIn, BounceOut, BounceInOut,
    Spring
}

Example usage

using ca.HenrySoftware.Rage;
using UnityEngine;
using UnityEngine.UI;
public class TestEase : MonoBehaviour
{
	[SerializeField] private Image _slowStatus = null;
	private bool _slow;
	[SerializeField] private Image _pauseStatus = null;
	private bool _pause;
	[SerializeField] private Image _fastStatus = null;
	private bool _fast;
	private readonly Color _colorOff = Color.white.SetAlpha(.75f);
	private readonly Color _colorOn = Color.blue.SetAlpha(.75f);
	private readonly Vector3 _scaleTo = new Vector3(1.333f, 1.333f, 1f);
	private const float _time = .333f;
	private void Start()
	{
		_slowStatus.color = _colorOff;
		_pauseStatus.color = _colorOff;
		_fastStatus.color = _colorOff;
	}
	public void Slow()
	{
		_pause = false;
		_pauseStatus.color = _colorOff;
		_fast = false;
		_fastStatus.color = _colorOff;
		Time.timeScale = (_slow = !_slow) ? .1f : 1f;
		_slowStatus.StopAllCoroutines();
		Ease3.GoColorTo(_slowStatus, (_slow ? _colorOn : _colorOff).GetVector3(), _time, null, null, EaseType.SineInOut, 0f, 1, false, true);
		Ease3.GoScaleTo(_slowStatus, _scaleTo, _time, null, () =>
		{
			Ease3.GoScaleTo(_slowStatus, Vector3.one, _time, null, null, EaseType.BackInOut, 0f, 1, false, true);
		}, EaseType.BackInOut, 0f, 1, false, true);
	}
	public void Pause()
	{
		Time.timeScale = (_pause = !_pause) ? 0f : _slow ? .1f : _fast ? 2f : 1f;
		_pauseStatus.StopAllCoroutines();
		Ease3.GoColorTo(_pauseStatus, (_pause ? _colorOn : _colorOff).GetVector3(), _time, null, null, EaseType.SineInOut, 0f, 1, false, true);
		Ease3.GoScaleTo(_pauseStatus, _scaleTo, _time, null, () =>
		{
			Ease3.GoScaleTo(_pauseStatus, Vector3.one, _time, null, null, EaseType.BackInOut, 0f, 1, false, true);
		}, EaseType.BackInOut, 0f, 1, false, true);
	}
	public void Fast()
	{
		_slow = false;
		_slowStatus.color = _colorOff;
		_pause = false;
		_pauseStatus.color = _colorOff;
		Time.timeScale = (_fast = !_fast) ? 2f : 1f;
		_fastStatus.StopAllCoroutines();
		Ease3.GoColorTo(_fastStatus, (_fast ? _colorOn : _colorOff).GetVector3(), _time, null, null, EaseType.SineInOut, 0f, 1, false, true);
		Ease3.GoScaleTo(_fastStatus, _scaleTo, _time, null, () =>
		{
			Ease3.GoScaleTo(_fastStatus, Vector3.one, _time, null, null, EaseType.BackInOut, 0f, 1, false, true);
		}, EaseType.BackInOut, 0f, 1, false, true);
	}
}

Documentation

Ease

The Ease class provides a collection of easing functions and utility methods for creating smooth animations in Unity. Ease either a float, or the alpha value of UI components.

Ease.Go

Initiates a coroutine-based animation with specified parameters.

IEnumerator Go(MonoBehaviour m, float from, float to, float time,
    Action<float> update, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease.GoAlpha

Initiates an alpha animation with specified parameters.

IEnumerator GoAlpha(MonoBehaviour m, float from, float to, float time,
    Action<float> update, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease.GoAlphaTo

Initiates an alpha animation to the specified value.

IEnumerator GoAlphaTo(MonoBehaviour m, float to, float time,
    Action<float> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease.GoAlphaBy

Initiates an alpha animation by the specified value.

IEnumerator GoAlphaBy(MonoBehaviour m, float by, float time,
    Action<float> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3

The Ease3 class provides static methods for performing easing animations on Vector3 or transform

Ease3.Go

Starts an easing animation on a Vector3 property from a starting value to an ending value.

IEnumerator Go(MonoBehaviour m, Vector3 from, Vector3 to, float time,
    Action<Vector3> update, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoPosition

Starts an easing animation on the local position from a starting value to an ending value.

IEnumerator GoPosition(MonoBehaviour m, Vector3 from, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoPositionTo

Starts an easing animation on the local position of a Unity object to a specific value.

IEnumerator GoPositionTo(MonoBehaviour m, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoPositionBy

Starts an easing animation on the local position of a Unity object by a specific value.

IEnumerator GoPositionBy(MonoBehaviour m, Vector3 by, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoRotation

Starts an easing animation on the local rotation of a Unity object from a starting value to an ending value.

IEnumerator GoRotation(MonoBehaviour m, Vector3 from, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoRotationTo

Starts an easing animation on the local rotation of a Unity object to a specific value.

IEnumerator GoRotationTo(MonoBehaviour m, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoRotationBy

Starts an easing animation on the local rotation of a Unity object by a specific value.

IEnumerator GoRotationBy(MonoBehaviour m, Vector3 by, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoScale

Starts an easing animation on the local scale of a Unity object from a starting value to an ending value.

IEnumerator GoScale(MonoBehaviour m, Vector3 from, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoScaleTo

Starts an easing animation on the local scale of a Unity object to a specific value.

IEnumerator GoScaleTo(MonoBehaviour m, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoScaleBy

Starts an easing animation on the local scale of a Unity object by a specific value.

IEnumerator GoScaleBy(MonoBehaviour m, Vector3 by, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoColor

Starts an easing animation on the color of a Image component or the background color of the main camera from a starting value to an ending value.

IEnumerator GoColor(MonoBehaviour m, Vector3 from, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoColorTo

Starts an easing animation on the color of a Image component or the background color of the main camera to a specific value.

IEnumerator GoColorTo(MonoBehaviour m, Vector3 to, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease3.GoColorBy

Starts an easing animation on the color of a Image component or the background color of the main camera by a specific value.

IEnumerator GoColorBy(MonoBehaviour m, Vector3 by, float time,
    Action<Vector3> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease4

The Ease4 class provides static methods for performing easing animations on Vector4 properties, including color animations for Image components and camera backgrounds.

Ease4.Go

Starts an easing animation on a Vector4 property from a starting value to an ending value.

IEnumerator Go(MonoBehaviour m, Vector4 from, Vector4 to, float time,
    Action<Vector4> update, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease4.GoColor

Starts an easing animation on the color of an Image component or the background color of the main camera.

IEnumerator GoColor(MonoBehaviour m, Vector4 from, Vector4 to, float time,
    Action<Vector4> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease4.GoColorTo

Starts an easing animation on the color of an Image component or the background color of the main camera to a specific value.

IEnumerator GoColorTo(MonoBehaviour m, Vector4 to, float time,
    Action<Vector4> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Ease4.GoColorBy

Starts an easing animation on the color of an Image component or the background color of the main camera by a specific value.

IEnumerator GoColorBy(MonoBehaviour m, Vector4 by, float time,
    Action<Vector4> update = null, Action complete = null, EaseType type = EaseType.Linear,
    float delay = 0f, int repeat = 1, bool pingPong = false, bool realTime = false)

Extension methods

Vectors are used as parameters for the above methods instead of Color objects. To help with converting between Colors and Vectors, extension methods are made available: Vector3.GetColor(), Vector4.GetColor(), Color.GetVector3(), Color.GetVector4(), Color.SetAlpha(float alpha).

Easing functions

Easing functions provide a convenient way to interpolate values smoothly over time. These functions define how the intermediate values between a start and an end point are calculated based on a time factor.

Easing functions are provided as static methods in the Ease class. To use an easing function, simply call the corresponding method and provide the required parameters:

using ca.HenrySoftware.Rage;

float startValue = 0.0f;
float endValue = 1.0f;
float time = 0.5f; // Progress of the interpolation, usually between 0 and 1

float interpolatedValue = Ease.QuadInOut(startValue, endValue, time);

Debug.Log(interpolatedValue); // Output: 0.5

About

Simple Unity3D Easing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages