Task Animation Library for Unity
Rx Version! -> kyubuns/AnimeRx
(-5f, 0f, 0f)
から (5f, 0f, 0f)
へ2秒かけて移動する。
await Easing.Create<Linear>(new Vector3(-5f, 0f, 0f), new Vector3(5f, 0f, 0f), 2f).ToLocalPosition(cube);
現在地から指定した位置まで移動する。
await Easing.Create<Linear>(new Vector3(-5f, 3f, 0f), 2f).ToLocalPosition(cube);
EasingのInCubicを利用して、指定した位置まで移動する。
await Easing.Create<InCubic>(new Vector3(-5f, 3f, 0f), 2f).ToLocalPosition(cube);
指定した速度(秒速1)で、2秒間移動する。
await Moving.Linear(1f, 2f).ToLocalPositionX(cube);
const float xRange = 5f;
const float yRangeMin = 5f;
const float yRangeMax = 10f;
await Moving.Gravity(
new Vector3(Random.Range(-xRange, xRange), Random.Range(yRangeMin, yRangeMax)),
Vector3.down * 9.8f,
5f
).ToLocalPosition(shape)
TranslateTo.Actionを利用すると、アニメーションした値を自由に使用出来る。
Easing.Create<Linear>(0, 100, 2f).ToAction<float>(x => Debug.Log(x))
スケジューラーは自作出来るので、特定のオブジェクトだけ時間を止めたりすることが可能。
デフォルトはTime.timeを利用していて、Time.unscaledTimeを利用するUnscaledTimeSchedulerも利用できる。
Easing.Create<Linear>(new Vector3(-5f, 0f, 0f), new Vector3(5f, 0f, 0f), 2f)
.ToLocalPosition(shape, default, new UnscaledTimeScheduler());
var cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.Token.Register(() => Debug.Log("Cancel"));
cancellationTokenSource.CancelAfter(500);
await Easing.Create<OutCubic>(new Vector3(5f, 0f, 0f), 2f).ToLocalPosition(cubes[0], cancellationTokenSource.Token);
2秒間右に等速で移動しつつ、最後の0.2秒でScaleを0にする
await UniTask.WhenAll(
Moving.Linear(3f, 2f).ToLocalPositionX(cube),
Animator.Delay(1.8f, Easing.Create<Linear>(Vector3.zero, 0.2f)).ToLocalScale(cube),
);
floatの推移を円**に変換する。
await Easing.Create<OutCubic>(0.0f, Mathf.PI * 2.0f, 2f)
.Convert(x => new Vector3(Mathf.Sin(x), Mathf.Cos(x), 0.0f) * 3.0f)
.ToLocalPosition(go);
2秒で5fから0fまで移動し、1秒停止したあと、2秒で-5fへ移動する。
await Easing.Create<OutCubic>(5f, 0f, 2f)
.Delay(1f)
.Concat(Easing.Create<OutCubic>(0f, -5f, 2f))
.Convert(x => new Vector3(x, 0f, 0f))
.ToLocalPosition(cubes[0]);
Supporting IProgress
await Easing.Create<Linear>(2f).ToProgress(Progress.Create<float>(x => Debug.Log(x)));
- Import UniTask
- Import AnimeTask
- Package Manager
https://github.com/kyubuns/AnimeTask.git?path=Assets/AnimeTask
- UnityPackage
- Package Manager
PlayやPlayToには2つの引数を渡します。
1個目がAnimator、2個目がTranslatorで、これらは明確に役割が異なります。
経過時間を受け取り、現在の値を返す。
値を反映する。
- Requires Unity2018.4 or later
MIT License (see LICENSE)