■アニメーションアセットを使ってみるよ!

EpicGames社のCyber Monday Saleで欲しかったUE4アセットを片っ端から衝動買い。無駄にしないためにもアセットの使い方をメモっていきます。

  Dynamic Sword Animset


asset01

ゴールデンアックスを作りたくなったときに必要になるので買った。自分でうまく作れないモーションだけにとても価値があるが、今まで5000円オーバーすることを躊躇していた。しかしセールで半額の今なら買える、今しかないって思って買った。いっぱいモーションが入っていることに期待。


 ■買ってみて

いいね!実際には101ものモーションが入っていた。1つあたり30円と考えれば安いなぁ。中にはInPlaceっていう位置を動かないデータが101RootMotionっていう位置移動を伴うモーションが46モーション入っていた。RootMotion46モーションはInPlaceに入ってるモーションと同じアクションではあるが位置移動を伴う。その場で昇竜拳(弱)モーションを行うのがInPlace、画面上方向にジャンプしながら昇竜拳(強)を繰り出すのがRootMotionっていうイメージ。同じモーションだけど動きが違う。当たり判定のつけ方も異なる。

その他にはシールドと剣のモデルも入っていた。


■使い方

ThirdPerson」テンプレートを例にとると「ThirdPersonCharacter」のブループリントを編集する。マネキンに剣を持たせてアニメさせてみる。

 

[モデルの登録]

MeshのSkeltalMeshSK_Mannekinのモデルを割り当てる。

AnimationUse Animation Assetを選択し、適当なモーションを選択

 ※例)AnimToPlayの項目で[Idle_Eqip_01]を選択

 

[剣の登録]

・「ThirdPersonCharacter」にスケルタルメッシュ・コンポーネントを追加

Swordを割り当てる

 

[剣をモデルにアタッチする]

・「AttachToComponent」を使って剣とマネキンを関連付ける


asset02

とりあえず、ここまでで剣を持ったグレーマンをアニメさせることができる

次は剣を振って攻撃させてみたい。

 

[剣を振って攻撃する]

剣を振って攻撃させるのは、少し複雑である

さっきは固定のアニメーションを指定するだけだったが、次はステートマシンを使ってアニメを変更させることにする。そのために新規に「アニメーションBP」を作成して「ステートマシン」を設定することになる。

まず、コンテンツブラウザーからアニメーション>アニメ―ションBPを選択。AnimInstanceとターゲットSK_Mannekin_Skeltonを指定。名前を「SwordAnime」と名付けた。

 

[SwordAnimeの割り当て]

・まずメッシュに設定したアニメのモードを「Use Animation BP」に変更

 ※「Use Animation Asset」からUse Animation BP」に変更する。

Anim Classに新規作成した「SwordAnime」を割り当てる

SwordAnimeを開いて「グラフ」モードにする

・グラフモードの「アニムグラフ」を選択

asset03


[デフォルトのステートマシンを追加する]

ここではステート(状態)を管理、遷移させるためのステートマシンを作成する

追加されるのはステートマシンであってステートではない。ステートはステートマシン内で作成する

 

・まずグラフ上で「add state」として新規ステートマシンを追加

・名前を「default」とする

asset04

[デフォルトのステートマシン中身を作成する]

・defaultをダブルクリックして中に入る

defaultのステートマシンには、idleattackの2つのステートを用意する

・2つのステートは相互に移動しあう

・ここでは120フレーム目でattackに移行し、300フレーム目でidleに帰ってくる


asset05

※図1

 

・ステートの変更条件は、それぞれの線の上のアイコン(A/B)で設定できる

・まずはAをダブルクリック

・条件はいつもとおんなじようにBPで書ける

asset06

※図2

 

Aの条件設定では120フレーム目で「Can Enter Transition」がTrueに変更になる

Trueになると図1のステートが「idle」から「attack」に変更される

asset07

図3

 

・これがBの遷移条件

・300フレームになるとAttackからidleに遷移する

 

そうそう、AnimSeqはイベントグラフで設定しています。

フレームの値で、毎フレームカウントアップして480フレーム目で0に戻しています。

asset08


できた!


asset09

とりあえず$30ぶんは楽しめそうになった

[参考]

http://unrealengine.hatenablog.com/entry/2016/11/22/213000