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をよろしくお願いします。