Fi-Mo 2020/05/29 22:45

進捗報告(9) + アニメーションレイヤーの話

概要

泡盛もろみです。

今回は
・アニメーションレイヤーについて (by昇)
・UIボタンの作成 (byミサゴ)
です。

アニメーションレイヤーについて

明山昇です。
ちまちまとアニメーションを作っていますが、合わせてアニメーションレイヤーについて調べてみたりしたのでここでご報告を。

なお、今回の記事はこちらのサイトを参考にさせて頂きました。この場を借りて御礼申し上げます。
- Unityを使った3Dゲームの作り方(かめくめ)
- XR-HUB


まずはこちらをご覧ください。

これは私が作った、走るアニメーションです。
よく見て頂くと分かる通り、変わっているのは上半身だけで、下半身は同じ動きをしています。
最初はUMotionでキーフレームをコピー&ペーストして作っていたのですが、コピペでちょっとズレたりする場合もあります。
共通の部分は使いまわしたり出来ないものかと調べた結果、アニメーションレイヤーが使えそうだなという話になりました。

アニメーションレイヤーってなんやねん

アニメーションに別のアニメーションを被せるものです。
例えば上半身だけ動いているアニメーションと、下半身だけ動いているアニメーションを重ねることで、全身が動いているアニメーションを作ったり出来ます。
デジタルで絵を描く時に使うレイヤーと感覚は同じです。
これを使うとこんな感じのことが出来ます。




レイヤーの設定には、ベースとなるアニメーションに対し、アバターマスクという、どの部位に対するアニメーションレイヤーを有効にするかという設定を使用します。
アバターマスクは[Assets]→[Create]→[Avater Mask]で作成できます。

上の例ではこんな感じで上半身のみに対し有効になるように設定しています。
(緑が有効にする部分)

アニメーションレイヤーの制御

アニメーションレイヤーはAnimator画面で設定出来ます。

"Spine"というのが追加したレイヤーです。

設定したレイヤーを有効にするか、しないかというのも設定出来ます。
これはUnityのGUI上で設定出来る他、スクリプトではAnimator.SetLayerWeight(x,y)で設定可能です。
 x=対象レイヤーのインデックス番号(Animator.GetLayerIndex("レイヤー名")で取得可能)
 y=Weightの値(0なら無効、0より大きく1未満なら両者を合成、1なら完全上書き)

細かいソースは省略しますが、これを使って、片手持ちと両手持ちを切り替えるボタンを作ってみました。
こんな感じになります。

このように、アニメーションレイヤーを使えば、予め設定したレイヤーを有効にしたりしなかったりする事で、対象のコンポーネントの動作を制御する事が出来ます。
今はレイヤー制御用のコントローラーを作ってそれにスクリプトをアタッチしているのですが、実際には、コンポーネント自身にスクリプトをアタッチして、コンポーネント毎にどのレイヤーを有効/無効にするかを設定出来るようにした方が良さそうです。
それはまた後日作りたいと思います。


さて、簡単ですが以上になります。
参考になれば幸いですし、また、「いやこうした方がいいよ」みたいなご意見頂けますと勉強になります。

フォロワー以上限定無料

ゲーム進捗に関する内容はフォロワー限定公開になります。

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

最新の記事

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索