キャラクターの切り替え
第一回 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には何も書いていません。複数キャラクターを使い分けるときはこの方法も悪くないと思います。
今回は剣を装備しただけなので、一つのキャラクターでソケットをつけて、そこで装備したり非装備にしたりとすることもできます。ただ、メッシュ(見た目)まで変わる場合はこの方法の方がやりやすいかと思います。