0
0

More than 3 years have passed since last update.

【UE4】アニメーションBPの共有(3)

Last updated at Posted at 2020-05-24

キャラクターの切り替え

第一回
https://qiita.com/KLaboratory/items/ab938c45c2c7106b65f6
第二回
https://qiita.com/KLaboratory/items/fecb657668215e48660d
から続きます。今回はMaria JJ Ong とMaria W/Prop JJの切り替えについて。キャラクターの切り替えについては、以前に作りましたこの記事を参考にしてください。
https://qiita.com/KLaboratory/items/59538687594e2ffe5d2a
https://qiita.com/KLaboratory/items/af3c63d7db4a0ccaaff7

ゲームインスタンス


変数をやり取りするためにゲームインスタンスを作ります。プロジェクト設定のマップ&モードの一番下のゲームインスタンスに登録します。
image.png
今回はbool変数を一つだけ登録します。これはキャラクターが通常系か進化系かを判断するものとします。通常系がfalse、進化系をtrueとします。最初は通常系なので初期値はfalseにします。
image.png

切り替えコマンドの登録


プロジェクト設定のインプットのActionMappingsにキャラクターを切り替える(進化させる)コマンドを登録します。
image.png

コントローラーBP


コントローラーBPに戻ります。先ほど登録した進化コマンドを呼び出します。現在のキャラクターの位置を取得して、Destroyします。ゲームインスタンスについては次に出てきます。
image.png
ゲームインスタンスの変数を取得し、trueであれば進化系になっているのでfalseに戻し、falseであれば進化系になるのでtrueにします。
image.png
先程取得した位置にキャラクターをspawnさせ、コントローラーをpossessします。
image.png
コマンドを入力するたびにMaria JJ Ong とMaria W/Prop JJが入れ替われば成功です。

攻撃コマンド


プロジェクト設定のインプットに攻撃コマンドを追加します。
image.png

コントローラーBP


コントローラーBPに戻ります。アタックのコマンドを呼び出します。コマンド実行の間、他の動きを止めます。delayの時間は、アニメーションが再生される時間です。
image.png
image.png

アニメーションBP


アニメーションBPに移ります。まずイベントグラフにAttack用の処理を追加します。
image.png
コントローラーから、Attack変数の状態を受け取り、アニメーションBPの変数にセットします。続いてAnimGraphです。
image.png
Attackステートは、歩きながら、あるいはIdleから発せられますが、終わったときは必ずIdleに戻します。AttackのアニメーションはMaria JJ OngのPunchingをわりあてます。
image.png
トランジションルールはAttackに行くときはそのまま、Attackから戻るときはNotを割り当てます。
image.png
image.png
実行すると、パンチをしますがMaria W/Prop JJにチェンジしても剣を持ったままパンチをします。これをMaria JJ Ongのときはパンチ、Maria W/Prop JJになると剣で切ると分けたいと思います。これはとても簡単ですが一つ仕掛けが必要です。

アニメーションの切り替え


イベントグラフに戻ります。イベントグラフにbool変数を一つ加えます。これは今が通常系か進化系かを判断するものです。これをゲームインスタンスから持ってきます。
image.png
これで今、通常系か進化系かがわかります。続いてAnimGraphのIdleステートに入ります。Great_sward_Idle1をつなげたいのですが、Output Animation Poseは一つのアニメーションしかつなげません。
image.png
そこでBlend Poses by boolを使います。true(進化系)のときはGreat_sward_Idle1になり、falseのときは通常のIdleになります。
image.png
image.png
Attackステートも同じです。
image.png
なお、Blend Poses by boolの詳細で、「Blend Time」のチェックは外しておいてください。
image.png
実行すると、IdleとAttackの動きが違っていることがわかります。ただ、Attackの時間が違うので、パンチが4回出たりします。ここはコントローラーBPで調整をしてみるといいと思います。

こうすることで、アニメーションBPを一つにして、手間の節約になりました。またご覧いただきますとわかりますが、コントローラー共通で使えます。そして、キャラクターのBPには何も書いていません。複数キャラクターを使い分けるときはこの方法も悪くないと思います。

今回は剣を装備しただけなので、一つのキャラクターでソケットをつけて、そこで装備したり非装備にしたりとすることもできます。ただ、メッシュ(見た目)まで変わる場合はこの方法の方がやりやすいかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0