0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/3faf3bb2-fd66-59ff-171e-23b0ecaa5a65.png) 今回はbool変数を一つだけ登録します。これはキャラクターが通常系か進化系かを判断するものとします。通常系がfalse、進化系をtrueとします。最初は通常系なので初期値はfalseにします。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/e8c92822-e7aa-d67b-791d-dad2f124e27d.png)

切り替えコマンドの登録

プロジェクト設定のインプットのActionMappingsにキャラクターを切り替える(進化させる)コマンドを登録します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/2f950a08-94f3-78f0-e858-4d840c16bfb8.png)

コントローラーBP

コントローラーBPに戻ります。先ほど登録した進化コマンドを呼び出します。現在のキャラクターの位置を取得して、Destroyします。ゲームインスタンスについては次に出てきます。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/c3885efa-e4f6-697b-605a-3d17ce27b251.png) ゲームインスタンスの変数を取得し、trueであれば進化系になっているのでfalseに戻し、falseであれば進化系になるのでtrueにします。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/33e671f7-80d0-8967-689e-0b665e2014a9.png) 先程取得した位置にキャラクターをspawnさせ、コントローラーをpossessします。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/e8f19cff-09d2-fd7f-3be2-849ea609925e.png) コマンドを入力するたびにMaria JJ Ong とMaria W/Prop JJが入れ替われば成功です。

攻撃コマンド

プロジェクト設定のインプットに攻撃コマンドを追加します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/2691ead1-6c44-fe83-c722-29db83dee222.png)

コントローラーBP

コントローラーBPに戻ります。アタックのコマンドを呼び出します。コマンド実行の間、他の動きを止めます。delayの時間は、アニメーションが再生される時間です。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/b1b63bf6-ab09-065d-a517-7004d8e6ecae.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/3a046387-d85d-e5c8-2ee2-a627a5e5d438.png)

アニメーションBP

アニメーションBPに移ります。まずイベントグラフにAttack用の処理を追加します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/8a843967-0bba-ceba-2647-26309e8ea1a9.png) コントローラーから、Attack変数の状態を受け取り、アニメーションBPの変数にセットします。続いてAnimGraphです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/3a8fff14-3c95-babd-b609-50c3329cb264.png) Attackステートは、歩きながら、あるいはIdleから発せられますが、終わったときは必ずIdleに戻します。AttackのアニメーションはMaria JJ OngのPunchingをわりあてます。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/50e488b5-adfa-7bee-031f-41aceb9d876c.png) トランジションルールはAttackに行くときはそのまま、Attackから戻るときはNotを割り当てます。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/9fdb6592-b4fa-8c4a-5ece-41e9738949ca.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/46e0ccf8-9722-5950-4da5-5f4333aed4fe.png) 実行すると、パンチをしますがMaria W/Prop JJにチェンジしても剣を持ったままパンチをします。これをMaria JJ Ongのときはパンチ、Maria W/Prop JJになると剣で切ると分けたいと思います。これはとても簡単ですが一つ仕掛けが必要です。

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

イベントグラフに戻ります。イベントグラフにbool変数を一つ加えます。これは今が通常系か進化系かを判断するものです。これをゲームインスタンスから持ってきます。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/b5bd4544-936c-6578-82bb-068d240264eb.png) これで今、通常系か進化系かがわかります。続いてAnimGraphのIdleステートに入ります。Great_sward_Idle1をつなげたいのですが、Output Animation Poseは一つのアニメーションしかつなげません。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/b40a76dc-4eba-e005-ae23-66a2ec290f41.png) そこでBlend Poses by boolを使います。true(進化系)のときはGreat_sward_Idle1になり、falseのときは通常のIdleになります。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/bc41ecd3-5ad4-c0b0-af75-5c6fccb51ae6.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/9cf5ea3e-d906-a334-fc01-7b5156c3fbc0.png) Attackステートも同じです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/82624ae5-ca6b-6106-330b-7d55f6073b1d.png) なお、Blend Poses by boolの詳細で、「Blend Time」のチェックは外しておいてください。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588692/a1deaffa-d93e-438d-9c21-8219e8601e9c.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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?