Anime Task by kyubuns - 9

Tween

Task Animation Library for Unity

Unity 2019.4.12f1MIT LicenseUpdated 4 days agoCreated on September 30th, 2018
Go to source

AnimeTask

Buy Me A Coffee

Task Animation Library for Unity

gif_animation_001

Sample

Basic

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

await Anime.Play(
    Easing.Create<Linear>(new Vector3(-5f, 0f, 0f), new Vector3(5f, 0f, 0f), 2f),
    TranslateTo.LocalPosition(cube)
);

↓ こう書いても同じです。

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

PlayTo

PlayToを利用すると、現在地から指定した位置まで移動する。

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

Easing

EasingInCubicを利用して、指定した位置まで移動する。

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

Linear

指定した速度(秒速1)で、2秒間移動する。

await Moving.Linear(1f, 2f).ToLocalPositionX(cube);

Gravity

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

TranslateTo.Actionを利用すると、アニメーションした値を自由に使用出来る。

Easing.Create<Linear>(0, 100, 2f).ToAction<float>(x => Debug.Log(x))

UnscaledTime

スケジューラーは自作出来るので、特定のオブジェクトだけ時間を止めたりすることが可能。
デフォルトはTime.timeを利用していて、Time.unscaledTimeを利用するUnscaledTimeSchedulerも利用できる。

await Anime.Play(
    Easing.Create<Linear>(new Vector3(-5f, 0f, 0f), new Vector3(5f, 0f, 0f), 2f),
    TranslateTo.LocalPosition(shape),
    new UnscaledTimeScheduler()
);

Cancel

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);

Delay

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),
);

Convert

floatの推移を円運動に変換する。

await Animator.Convert(
    Easing.Create<OutCubic>(0.0f, Mathf.PI * 2.0f, 2f),
    x => new Vector3(Mathf.Sin(x), Mathf.Cos(x), 0.0f) * 3.0f
).ToLocalPosition(go)

Instructions

  • Import UniTask
  • Import AnimeTask
    • Package Manager https://github.com/kyubuns/AnimeTask.git?path=Assets/AnimeTask
      • UniTask must also be installed by PackageManager
    • UnityPackage
      • AnimeTask.asmdef must have a reference to UniTask.
      • Screen Shot 2020-06-27 at 22 48 21

考え方

PlayやPlayToには2つの引数を渡します。
1個目がAnimator、2個目がTranslatorで、これらは明確に役割が異なります。

Animator

経過時間を受け取り、現在の値を返す。

Translator

値を反映する。

Requirements

  • Requires Unity2018.4 or later

License

MIT License (see LICENSE)

Show all projects by kyubuns