vaguely

和歌山に戻りました。ふらふらと色々なものに手を出す毎日。

UnityでAnimationを作ってみる

はじめに

Unity2017 くらい?から、 Unity でも Maya や Blender などのように 3D アニメーションを作ることができるようになりました。

今回はこれを試してみたいと思います。

環境(いつも書き忘れてますが)

  • Unity 2018.2.8f1

アニメーションを作ってみる

では早速作ってみたいと思います。

Keyframe recording mode を使ったアニメーション作成

まずは Scene に Cube を一つ作成し、それを移動させてみます。

  1. メニューの Window > Animation > Animation から Animation ウインドウを開く
    (ウインドウ下部で、 Curves ではなく Dopesheet が選択されているかも確認する)
  2. Cube を選択した状態で 1.の Add Property ボタンを押し、 Transform > Position の右にある+ボタンを押す
    (anim ファイルの保存を求められるので適当に名前を付けて保存)
  3. Add Property ボタンの上部にある赤丸ボタンを押す
  4. 右側の白い縦線を移動させながら、各時間ごとの Cube の位置を Cube の Inspector > Transform で値を入力して指定する
  5. 完了したらもう一度赤丸ボタンを押して終了する

f:id:mslGt:20180919075056p:plain

再生

作成したアニメーションのプレビューは赤丸ボタンの3つ隣にある再生ボタンでできます。

実際にアニメーションの再生などをコントロールするのは、 anim ファイルと同じ場所に自動で生成される Animator Controller です。

あとは以前 Animator を触った時と同じようにコントロールすれば OK です。

手動でキーを追加する / 削除する

Keyframe recording mode で自動でキーを設定するのではなく、手動でキーを追加したり削除したりしてみます。

上記 1.、2.を実行後、 Add Property ボタンの上に表示された Cube : Position の上で右クリック → Add key でキーを追加、 Delete key でキーを削除できます。

また追加されたキーの値も編集できるので、その気になれば Tween 的な動きもできなくもない気がします。
(素直に DOTween などを使う方が良いとは思いますが)

複数のオブジェクトを動かす

複数のオブジェクトを一度に動かしたい場合。

Hierarchy で複数のオブジェクトを選択し、 Add Property でまとめて。。。と思いきやこれはできません。

anim ファイルが一つの GameObject を対象に作られる(多分)ためです。

ただし、一つの GameObject に子どもとなる GameObject がある場合、親の GameObject に対する anim ファイルを作ると子どもの GameObject にもアニメーションが接敵できるようになります。
(Add Property で子どもの GameObject に対する Position などの設定項目が表示されるようになります)

f:id:mslGt:20180919075039p:plain

ということで、複数の GameObject を同時に動かしたい場合はそれらをまとめて空の GameObject の子どもにしてしまえば OK 、という訳ですね。

おわりに

これでもう Maya も Blender も不要!。。。な訳はありませんが、それらでアニメーションを作る → インポートして動作確認 といったことを繰り返すよりは、可能であれば Unity 内で完結してしまえるのが便利ですね。

Maya や Blender にしても、今回の Unity でのアニメーションにしてもまだ簡単な機能しか使えていないため、どこまでできるのかはまだ不明なのですが。。。

参照