ネリスさん備忘録

主にUE4の備忘録を残すよ!

【UE4】3Dのサイドスクロールアクションゲームを作ろう!【第三回】

lunanelis.hatenablog.com

続き。

今回は、腹から弾を出すのが不自然だから
アニメーションを設定して銃から弾を撃っていく感じにする

最終的にこうなる

youtu.be

 

 目次

 

アニメーションを用意する

EpicGamesLauncherを開き、マーケットプレイスEpicGamesコンテンツを開き

f:id:LunaNelis:20210422232655p:plain
その中からこのアセットを探してプロジェクトに追加する

f:id:LunaNelis:20210422231331p:plain

AnimStarterPackがプロジェクトに入った

f:id:LunaNelis:20210422233205p:plain

 

アニメーションを適応する

プロジェクトに追加したアニメーションは、今使ってるSideScrollerCaracterにはそのままでは使えないので、リターゲットを行う。
参考ページ↓

historia.co.jp

f:id:LunaNelis:20210424023331p:plain

今回はIdle_Rifle_Hipをリターゲットして、SideScrollerCharacterで使う
ThirdPerson_AnimBPを開き、AnimGraphでこんな感じでノードを組む

f:id:LunaNelis:20210424024127p:plain

ボーン毎のレイヤードブレンドを選択し、詳細タブにある
LayerSetupを追加して、こんな感じに設定する

f:id:LunaNelis:20210423031924p:plain

この手順により、腰から下は以前の歩いたり走ったりするアニメーションが流れて、腰から上は銃を構えるアニメーションが流れるというように合成できる。

 

※今回の処理では走る時に腕が揺れてしまうのであまりいい処理ではないが
このあたりの対処についてはControlRigを使うことで解決するため今はこのままでいく。

銃を用意する

アニメーションと同じくマーケットプレイスから取得していく。
今回使うのは無料→永続無料コレクションにあるこのアセット

f:id:LunaNelis:20210423033058p:plain

アニメーションの時と同じようにプロジェクトに追加していく

他にも無料で銃っぽいアセットを提供している人はいるのでそれを使うのも〇

銃を持たせる

銃の追加が完了したら、手に持たせる必要がある。
そのために銃を右手にアタッチする作業を行う

スケルタルメッシュのスケルトンツリーの中からhand_rを探して右クリック
ソケットを追加する

f:id:LunaNelis:20210423033646p:plain

ソケットは移動できるので、手のひらあたりに移動させておく。

f:id:LunaNelis:20210423033720p:plain

また、ソケットの名前はWeaponとでもしておく。

f:id:LunaNelis:20210423033759p:plain

ソケットを右クリックしてプレビューアセットを追加を選択し
その中からSK_AR4_Xを選ぶ

f:id:LunaNelis:20210423033919p:plain

なんか持ち方が変なので、ソケットを動かしたり回したりして持たせてるっぽい位置にする

f:id:LunaNelis:20210423034114p:plain

それなりに調整してこんな感じになるようにソケットを設定した。

f:id:LunaNelis:20210424025130p:plain

銃に詳しい人には怒られそうだけど、今回はそういうのじゃないんで…

ただ、ここで銃を持ってるっぽい見た目になっても、ゲーム中で銃を持ってくれてない。

f:id:LunaNelis:20210424025528p:plain

さっきまで持ってたじゃんと思うが、あれはプレビュー用のサンプルであって、本番のキャラクターには何も関係ないものだった。

SideScrollerCharacterを開き、StaticMeshComponentを追加、メッシュはさっきと同じようにSM_AR4_Xを設定。

f:id:LunaNelis:20210424040724p:plain
ConstructionScriptでこんな感じに書くことによって…

f:id:LunaNelis:20210424025848p:plain

ゲーム内で銃を構えることができるようになった。

f:id:LunaNelis:20210424022816p:plain

銃から弾が出るように見せる

銃を構えたはいいものの、やはりまだ腹から弾が出ているので
これを銃から出てるっぽく見せる。

f:id:LunaNelis:20210423035735p:plainf:id:LunaNelis:20210424030629p:plain

まずは弾が出てくる位置にソケットを設定する
Weaponのソケットの時と同じように調整し、銃の先端に置く
名前はMuzzleとする

f:id:LunaNelis:20210424032242p:plain

SideScrollerCharacterのイベントグラフで弾を発射する処理を書いたが

それをこのような感じにする。
さっき作ったMuzzleソケットの位置から弾が生成されるようになる。

f:id:LunaNelis:20210424032537p:plain



え?SpawnActorのピンの種類が違う?

SpawnTransformのピンの上で右クリックして、構造体ピンを分割を選べば同じようになる。

f:id:LunaNelis:20210423040059p:plain



+α(やらなくてもいいけど、やると雰囲気UPのプラスアルファ)

銃を撃つときの反動っぽいアニメ出したいよね
ということでおさらい的にFireRifleHipのアニメーションをリターゲットしてくる

f:id:LunaNelis:20210424033805p:plain

リターゲットしたFireRifleHipを右クリックして
作成する→AnimMontageを作成を選択し、アニメーションモンタージュを作成する

f:id:LunaNelis:20210424033915p:plain

Montageを作ったらアニメーションスロットタブからスロットを追加を選び
Shotというスロットを作成する

f:id:LunaNelis:20210424034559p:plain

そのままモンタージュのこの部分からスロットをさっき作ったShotに変更する

f:id:LunaNelis:20210424034638p:plain

次はAnimBPで右クリックからMontageで検索し、
スロット'DefaultSlot'を選択する。

f:id:LunaNelis:20210424034144p:plain

それをこう繋ぐ

f:id:LunaNelis:20210424034731p:plain

そのあと、詳細タブのSlotNameをShotに変更する。

f:id:LunaNelis:20210424034759p:plain

これで下準備が完了
SideScrollerCharacterに戻ってきて、弾を発射する処理のあたりに行く。
そこからモンタージュを再生を選択

f:id:LunaNelis:20210424035005p:plain

球を発射する処理のすぐ後ろに設定する

f:id:LunaNelis:20210424035040p:plain

f:id:LunaNelis:20210424035121p:plain

Meshをピンにさすのも忘れずに。

これで攻撃をしてる感が出た

youtu.be

 

次回予告

今回でプレイヤーの基本的なアクションがそろったことになる。

なので、次からは敵を作り、敵が攻撃し、敵を倒せるというのをやっていく。

やっぱり文字と画像ベースじゃ長くなっちゃうね。