ステートマシンを使わないアニメーションを使うことが多くなってきたのですが、自分がすぐ忘れてしまいそうなのでまとめます。
ステートマシンを使わないということは一回だけアニメーションを動くようにしたいなど、例えばリロードであったり攻撃のモーションであったりと
で、以下のリロードシステムの実装について書きます。
リロードを実装する!!
仕様:Rキーを押すとリロードのモーションが動き出す。
アニメーション内で球を込めたら実際に球が補充されるようにする。
使うもの:ThirdPersonテンプレート
アニメーションスターターパック(無料)
ブループリントインターフェース側
まずBluePrintInterfaceを作成します。
今回名前は[ReloadSystem]にしました。
関数を作成します。名前をReloadSystemにしました。
アニメーションブループリント側
次にAnimationBluePrintを作成又は起動します。(汚くてすみません・・・)
クラス設定から実装インターフェースの部分に作成したBluePrintInterfaceを追加します。
アニメーションモンタージュ側
次にアニメーションモンタージュを作成します。
使用するSkeltalMeshを選択し名前をReloadにします。
アニメーションモンタージュを開きReloadのアニメーションを選択します。
次に行うことはアニメーションが球を込めた時にイベントが発生するようにします。アニメーションバーで球を入れた時に合わせ通知を左クリックして新規作成をします。すると通知名を入れる場所が出てきます。
名前をSetReloadにします。
@bussan_desu ブログ拝見したのですが、モンタージュのNotifyの設定ですが、ブログ画像ですと「Queued」のように見えたので画像のようにしたほうが良いかなと思います。 pic.twitter.com/tZOUQ9hCh4
— 篠崎@UE4ゲーム製作中 (@gc_shino) 2015, 6月 11
完全に忘れていたのでありがたいです!
次にグループを設定します。
以下の虫眼鏡マークをクリックします。
スロットを追加からReloadを追加します。(画像では色々と追加されてますが気にしないでください)
アニメーションブループリント側
アニメーションブループリントに戻り、AimGraphでスロットを作成しReloadに設定します。そして繋げます。
Character側のBluePrint
今回は[R]キーを押すとReloadが始まるようにします。MeshからGetAimInterfaceを出し、先ほど作ったReloadSystemを呼び出します。
次にリロードの中身ですが、以下のとおりに作成しました。カスタム関数で作成し名前を[Projectible Count]しました。多分もっとスマートな方法があるはず・・・
AnimationBluePrint側のブループリント
ReloadSystemのイベントを呼び出しMontagePlayを出し、先ほど作成しアニメーションモンタージュを設定します。
次に、アニメーションモンタージュ内で作成したSetReloadを出し、自分のキャラクターを呼び出しリロードの部分であるProjectible Countを呼び出します。
これで完成です。
ステートマシンを使うと楽勝なんですけど使わないとなると行ったり来たりでややこしいですね。
一応これで動きましたが、何か間違いや指摘があればTwitterの方でよろしくお願いします。是非情報共有を・・・
話は変わりますが、UE4.8がリリースされましたね。自分ははPCの不調か何かで4.7の時から新規プロジェクトが作成出来なくなっていて4.8も同様でした。悲しい・・・。
どうすれば治るのかわからないのでOS入れ直します・・・
以上。