[Unity] Mecanimを使ってユニティちゃんを動かしてみた、で出た疑問点を解消していく
前回の記事で足跡を付けるためにユニティちゃんを動かしてたのですが、「第 1 回・Unity / Mecanimでユニティちゃんを歩かせる」をそのまま使わせていただきました。
Unityを使うからにはやっぱり3Dモデルを自由自在にアニメーションさせたい!と思い勉強することにしました。この記事ではUnity4で追加されたMecanimを使ってユニティちゃんを動かしていく過程で、疑問に思った点、うまくいかなかった点、などをメモしていきます。
Contents
環境
Unity 5.0.1f1
参考サイト
第 1 回・Unity / Mecanimでユニティちゃんを歩かせる
ユニティちゃんのAnimation Type
Mecanim関係でよく目にするのがAnimation Typeの種類の話。無勉強だとGenericとHumanoidの違いがわからず。
Mecanim におけるジェネリックアニメーション(公式ドキュメント) や ヒューマノイドアニメーションでの作業(公式ドキュメント) を読むと
ヒューマノイドモデルは、人体の主要なパーツ(胴体、頭、手足)が関節で結合された、同じ基本構造を持つことが期待されます。
と記述があります。要はモデルデータとモーションデータを同じHumanoidタイプにしておけば、構造が同じなのでモーションをモデルに使うことができると理解しました。
Mecanim により解釈されるシンプル化したヒューマノイドボーン構造と、スケルトンの中に表現される実際のボーンとの間の、マッピングを構築することです。Mecanim の用語では、このマッピングのことを Avatar (アバター)と呼びます。
さらにAvatorとは?と思っていた疑問点もここで解消。すっきり。
Animatorウィンドウのスクロール方法
数分悩んだ・・・。Animatorウィンドウにはスクロールバーが付いていません。画面内の表示をスクロールする方法は「マウスの中ボタンドラッグ」でした。
Animatorへパラメーターを追加
Unity5になってパラメータを追加する場所が変わったようです。
Unity4.6の時は左下にParameters入力欄があったと思いますが、Unity5ではParametersタブとしてされて左上にありました。細かいことですがプラスボタン左側のエディットボックスは検索です。プラスボタンを押し、パラメーターを追加してから名前を付けるようです。ちょっと検索欄が紛らわしい。
Any Stateとは
現在どのステートにいるかに影響を受けることなく、特定のステートに遷移したい場合のために存在している。
とのこと。
例えば、Idleステート、Walkステートがあり、どちらの状態からもKickステートに遷移可能な場合、Any StateからKickステートにMake Transitionをすると、どのステート状態になっていようが条件さえ満たせばKickステートに遷移することができる。
これでWalk中でもKick出来る。
ファイティングユニティちゃんアセットを使った時の作業
Mecanimでアニメーションを勉強しようと思っていたところに、タイミングよくこのキャンペーン。
【豆知識】ねえ知ってる?ファイティングユニティちゃんの新アセットがいつの間にか登場してて、無料ゲットキャンペーンもいつの間にか始まってるんだよ。 http://t.co/lm6YSXoUOb pic.twitter.com/PPUpo0CGSi
— EF-12 (@EF12project) 2015, 4月 24
早速使ってみました。上のほうでも書きましたが、モデルとモーションのAnimation Typeを同じにする必要がありそうです。【コラボ企画】「ファイティング ユニティちゃん」モーションパックで、ファイティングプロ生ちゃん! #unity3dにもあるようにAnimation Typeを更新しましょう。
おー、動いた。
キックに音を付けてみる
キックに合わせて音を再生するには何をすればよいか調べてみました。キックを行うアニメーションと同時にキック音を再生にするにはState Machine Behaviour(公式ドキュメント)が使えそうです。
キック音再生用のスクリプトを作成してみました。
using UnityEngine; using System.Collections; public class AttackKickStateMachine : StateMachineBehaviour { public AudioClip NormalKick; override public void OnStateEnter( Animator animator, AnimatorStateInfo stateInfo, int layerIndex ) { AudioSource.PlayClipAtPoint(NormalKick, animator.gameObject.transform.position); } }
このファイルを作成した後、Animator上にあるKickステートを選択。Add Behaviourボタンを押すと作成したスクリプトがリストに表示されるので選択。そのスクリプトはキック音のAudio Clipが必要なのでセット。
実行してみるとKickステートになった時に音が鳴っています。これがState Machine Behaviourの一番簡単な使い方だと思われます。
ヘルプにも書いてありますが具体例は
- ステートに入った、または出た時に音声を再生する
- 一定のテスト(例:地面判定)を、適切なステートでのみ実行する
- 特定のステートに関連している特別なエフェクトを有効化、管理する
いろいろと出来そうですね。
ちなみに State Machine Behaviour は Unity5.0の新しいアニメーション機能 によるとUnity5からの機能っぽいです。似たような名前で State Machine Transitions というのもあるのですがドキュメントがまだ英語だ!この機能はパスだな!(笑) という感じで、手をつけていません。
キック音は On-Jin ~音人~ さんの効果音を使いました。シュッ!
ユニティちゃんのアニメーションデータプレビュー
自分の環境だと./UnityChan/Animations の中身をプレビューすると顔だけの表示になってしまうのだけど・・・。何か設定ミスってるのかな・・・?
プレビューしてもどんなモーションかわからず・・・。
ユニティちゃんライセンス
このコンテンツは、『ユニティちゃんライセンス』で提供されています
[…] 。これにスクリプトを追加すれば出来る。スクリプト内容は他サイトを参考にしたので、以下のリンクで確認できる。音素材も載っている。 http://kikikiroku.session.jp/unity5-mecanim-animation-study/ […]
はじめまして、
State Machine Behaviourのところ参考になりました。
m(._.*)mペコッ
[…] Mecanim を使ってユニティちゃんを動かしてみた、で出た疑問点を解消していく | きききろく […]
[…] Mecanimを使ってユニティちゃんを動かしてみた、で出た疑問点を解消していく | きききろく […]