AnimeTask v1.3 リリースしました!

github.com

Task(async/await)ガンガン使ってる方向けのTweenアニメーションライブラリです。

v1.0から何が変わった?

なんと、基本構文すら変わりました。
ということで、1から紹介し直します。

基本

(-5f, 0f, 0f) から (5f, 0f, 0f) へ2秒かけて移動する。

await Easing.Create<Linear>(new Vector3(-5f, 0f, 0f), new Vector3(5f, 0f, 0f), 2f).ToLocalPosition(cube);

Linearの部分を色々変えるとEasingが使えます。
例えば

await Easing.Create<InCubic>(new Vector3(-5f, 3f, 0f), 2f).ToLocalPosition(cube);

コンセプト

Easing.Create<InCubic>(new Vector3(-5f, 3f, 0f), 2f)

という数字をアニメーションさせる部分(Animator)と

.ToLocalPosition(cube)

という、アニメーションしている数字をLocalPositionに反映する部分(Translator)はそれぞれinterfaceが切られているので別々に拡張出来ます。
例えば後ろを .ToLocalScale(cube) とすればスケールになりますし、.ToAction<float>(x => Debug.Log(x)) とすればログに出せます。

PlayTo

現在地から指定した位置まで移動する。

await Easing.Create<Linear>(new Vector3(-5f, 3f, 0f), 2f).ToLocalPosition(cube);

新機能

Concat

アニメーションの結合が出来るようになりました。
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]);

移動距離から時間を計算する

基本的には「nかけて位置xまで移動する」という指定です。
「xまで、速度sで移動する」という指定が出来るようになりました。
(5f, 0f, 0f) まで、距離/2秒 で移動する

await Easing.Create<OutCubic>(new Vector3(5f, 0f, 0f), x => x / 2f)

いろいろなTranslator

ToColor

Easing.Create<OutQuart>(Color.white, Color.yellow, 0.3f).ToColor(sprite);

ToMaterialPropertyFloat

Easing.Create<OutQuart>(0f, 1f, 0.3f).ToMaterialPropertyFloat(material);

まとめ

というわけで、Task時代のアニメーションライブラリAnimeTaskをよろしくお願いします。