UnrealEngine4研究所

UnrealEngine4の研究/開発をしてます。ガルルソフトウェア研究所です。

アセット

Reactive Water

■水面処理のアセットを使ってみるよ!

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

  Reactive Water

01

水面の表現にWaterPlanesはよくできているが、とりあえずWaterPlanes以外の選択肢の1つとして買ってみた。水中歩行のエフェクトでボトムズのクメン編みたいな演出に期待してる。


 ■買ってみて

WaterPlanesの代わりにはならなかった。なぜなら水面の表現は含まれていないからだ。キャラがバウンディングボックスに入ると波紋ができる。過度な期待をしていると少し淡白な演出にやや肩透かしを食うところもないわけではないが波紋については期待以上だった。波紋を通して見える画像の歪みがいい感じなのである。ただ$10なら作る手間を考えると確実に安いのだが通常価格の$20なら頑張って、もう少しカスタマイズ可能なものを自分で作ろうかな、、、という気にはなる。

02
 波紋の向こうの歪んだ感じがいいねー


■使い方

使い方は非常に簡単。BP_Water_Actorをアウトライナーで配置するだけでいい。バウンディングボックスを配置するとその領域に入ったCharacterが水面の高さに併せてエフェクトが出るようになる。水面そのものは表現されないので別途「Instant Swimmable Water」のアセットと組み合わせるといい感じに水面のエフェクトができる。クメン編はできるね。

03
Instant Swimmable Waterの水面と組み合わせてみた、いい感じ。


ただこのエフェクトが生成されるのは、どんなものにも対応しているわけではないので注意。具体的にはCharacterなら配置しただけで波紋が発生するが、Pawnなら発生しない。BPを解析してみるとCharacterMovementのVelocity値を参照して波紋を生成しているので、CharacterMovementのVelocity値を持たないActorとかStaticMeshでは波紋が生成されない。とはいえバウンディングボックスに含まれるActorを検索してVelocity値を参考にしているだけなので、この辺りを改造すれば自分の都合に合うActorにも対応させることができる。実際にPawnにCharacterMovementコンポーネントを付加してVelocity値を設定すれば波紋を発生させることはできたし、そもそも参照している値をVelocity値から自分の都合に合うものにかえればどうとでもできそうなシンプルなBPで助かる。



標準アセットのWaterPlaneとの組み合わせ。

04
WaterPlaneのリアルさとReactiveWaterのゲーム的な波紋の表現とのかみ合わせが見た目的にちょっと相性が悪い。調整でなんとかなるかもしれない。

お手軽に水面の表現を少しリッチにしてくれるアセットで買ってよかったと思える。安い時にオススメ!

Dynamic Sword Animset

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

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


ギャラリー
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • 第6回ぷちコン入賞賞品がスゴい、開封の儀!
  • ライブドアブログ