unity ECSでanimation

TL;DR

この動画を見ろ youtu.be

とはいえ検索エンジンで日本語でなにかしら引っかかってくれればうれしいので記事を書く

動画のやり方はざっくりこんな感じ

  • まずはCharacterControllerなりでECSで動くオブジェクトを作る
  • animationを動かす用のGameObjectを生成する。GameObjectなのでECSとは何も関係ない
  • GameObjectでanimationを動かす
  • ECS上のEntityの座標が変わってもanimationを動かすGameObjectは位置が変わらないので、Entityの座標をGameObject側に反映するコードを書く
  • entityを削除したときGameObjectも消えるようにしてあげる

「え?それECSで動いてるって言わないじゃん!」

ごもっともです。とはいえ、GameObjectの物理演算(PhysX)とECS上の物理演算は干渉してくれないので、こういう逃げ道を選ぶことも現状だと必要です。animationさせるオブジェクトの数がしれてるならこのやり方でも特に問題なく動くでしょう。

ちゃんとECSベースで動かすためのアセットも紹介されていて、


GPU ECS Animation Baker assetstore.unity.com


Rukhanka - ECS Animation System assetstore.unity.com


などがある。使用感の個人的な好みとしてはRukhankaだが、どれくらい使い物になるかは未知数なのでいつかのタイミングで検証したい