投稿記事

2022年 10月の記事 (2)

UE5でTPSゲームを作る Part1(自分用メモ)

今回からTPSゲーム制作を始めたので簡単に作業手順を示しておきます。色々と抜けてるので後で書き足します💦

実装する機能

・武器の装備
・発砲時のアニメーション
・発泡時のエフェクト
・発泡時のサウンド

モデルとアニメーションの準備(Idleアニメーション再生まで)

フォルダ作成とアニメーションの準備

1.好きな場所にAnimationsフォルダを作成する
2.ThridPersonのサンプルを選びプロジェクトを作成する
3.Lira Starter Gameをマーケットプレイスでダウンロードしてプロジェクトを作成する

Lira Starter Gameのプロジェクトからアニメーションをエクスポートする

1.ContentDrawerの検索窓の右側にある扇マークをクリックしてAnimationのAnimationSequenceを選ぶとアニメーションだけが表示される
2.左のフォルダをCharactorsを選択して必要なアニメーションに絞る
3.Ctrl+Aですべてのアニメーションを選択→右クリック→AssetActions→Bulk Export→Export Allを選んでAnimationsフォルダにエクスポートする

この時点でもうLira Starter Gameのプロジェクトは使わないので消してもよい

エクスポートしたアニメーションを最初に作ったプロジェクトにインポートする

1.ContentDrawerにAnimationsフォルダをドラッグ&ドロップ
2.Animationsの検索窓からSK_Mannequinを選んでImportAllでインポートしてセーブする

武器のモデルをマーケットプレイスでダウンロードしてインポートする

1.Miltliy Weapon SilverをダウンロードしてAdd to Projectで最初に作ったプロジェクトに追加する
2.ContentDrawerにMiltily Weapon Silverがあるか確認する

BlueprintsとAnimationsの準備してIdleアニメーションを設定する

1.ContentDrawer→右クリック→フォルダ作成→Blueprintsのフォルダを作成する
2.ThirrdPersonフォルダのBP_ThirdPersonを作ったばかりのBlueprintsフォルダにコピーする
3.フォルダのCharactor→Manekins→Animations→ABP_MannyをAnimationsフォルダにコピーする
4.BlueprintsフォルダのコピーしたBP_ThirdPersionCharactorをBP_Playerに変更する
5.AnimationsフォルダのコピーしたABP_MonnyをABP_Charactorに変更する
6.右側のWorldSetting→GameMode→DefalutPawnClassをBP_Playerに変更して虫眼鏡マーククリックしてBP_Playerを開く
5.左側のMeshを選択して右側のAnimClassのABP_Quinn_CをABP_Charactorに変更して動いてるか確認する
6.ABP_Charactorを開いて左側にあるAnimGraphをダブルクリック→Locomotionをダブルクリック→Idle→右側のAssetBrowserからMF_Rifle_hipfireドラッグ&ドロップしてOutputAnimationPoseに繋げる


ここでプレイするとIdleのみライフルを持ってるアニメーションに変わる

Idle以外のアニメーションの設定

SK_Mannezuinの作成

1.Animationsフォルダ→右クリック→Animations→Blend Space→SK_Mannequin(skeleton選んでBS_RifleWalkRunと名付けてファイルを開く
2.Horizontail Axisを以下の様に設定
Name = Direction
Minimum Axis Value = -180.0
Maximum Axis Value = 180.0
3.Vertical Axisを以下の様に設定
Name = Speed
Minimum Axis Value = 100.0
Maximum Axis Value = 500.0(こちらを先に変更する)
4.必要なアニメーションを右側の検索窓からMF_Rifle_Jog_Fwdを上にMF_Rifle_Jog_Bwdを最右上と最左上にMF_Rifle_Jog_Leftを左上にMFRifle_Jog_Rightを右上にドラッグ&ドロップ
5.必要なアニメーションを右側の検索窓からMF_Rifle_Walk_Fwdを下にMF_Rifle_Walk_Bwdを最右下と最左下にMF_Rifle_Walk_Leftを左下にMF_Rifle_Walk_Rightを右下にドラッグ&ドロップ


6.ABP_Charactorに戻り→Locomotion→Idle→Walk/Runに右側のBS_Rifle_WalkRunをさっき作ったBlendSpaceをドラッグ&ドロップして以下のようにする

7.アニメーションの修正
ABP_Charatorの右下のBS_Rfile_Jog_Fwdを開き左側のRoot MotionのEnableRootMotionとFoceRootLockにチェックする。これでその場で走っているモーションになるのでブレンドスペースで使ったアニメーションすべてに同じ様にチェックを入れる。

これで正常に武器をもった状態のアニメーションが再生されるようになる

武器を手に持たせる

1.Blueprints→BP_Playerを開きViewportを選択→左側からMeshを選択してAddを押してSkeltalMeshを追加してWeaponと名付ける
2.Meshを選択して右側のSkeltalMeshをSKM_Qunn_SimpleからSKM_Qunnに変更する
3.Weaponを選び右側のSkeltalMeshからAssauのt_Rifle_Aを選択
4.右側のSockets→Parent Socketsの虫眼鏡マークを押してWeapon_rを選択すると武器を持った状態になる
5.手にフィットするように位置と角度を調整する
以上で武器が手に持っていることを確認する

発泡処理

ボタンの割当

Edit→Project Setting→Input→Action Mappingの右の+をクリック→名前をFireにする→割り当てたいキーやマウスを押す(例えば左クリック)→LeftMouseButtonを選択

発泡のアニメーションが再生できるようにする

1.BP_Playerを開きInputMotion FireのPressedからPlayMontageを繋ぐ
2.ContensBlowerのAnimationsフォルダからMM_Rifle_Fireを選んだ状態で右クリック→Create→CreateAnimMontageを選択しファイルを作る
3.2で作ったファイルをPlayMontageのMontage to Playに設定する
4.左側のMeshをドラッグ&ドロップしてPlayMontageのSkeltal Mesh Componentを繋ぐ

発砲時のアニメーション再生時に動かないように修正する

1.BP_Playerを開き左側からCharactorMovementをドラッグ&ドロップしてそのノードから線を伸ばしてDisable Movementノードを作る
2.1で作ったノードをInputActionFireとPlayMontageの間にくるよう線を繋ぐ
3.CharactorMovementをコピペしてSetMovementModeノードを作る
4.3で作ったノードのNewMovementModeをNoneからWalkingにする

発砲時のエフェクトを出す

1.BP_Playerを開き左側からWeaponをドラッグ&ドロップしてそのノードからGetSocketTransformノードを作る
2.PlayMontageからSpawn Emitter at Locationを作る
3.GetSocketTransformのReturnValueを分割してLocationとRotationを2で作ったノードと繋ぐ
4.Spawn Emitter at LocationのEmitter TemplateにAssaltRfileMazzleFlashを選択

発射時のエフェクトの詳細位置を設定する

1.ViewPortタブで切り替えて左側のWeaponを選択して右側のMeshのAssaltRfileからファイルに飛んで開く
2.左側のMazzleFlashを選択して名前をコピーする
3.BP_Playerに戻りGetSocketTransformのin Socket Nameに3でコピーした名前をペーストする
もしエフェクトが出てなかったらエフェクトのファイルを開いてから再生する

発砲時のサウンドを鳴らす

1.BP_Playerを開きSpawn Emitter at LocationからPlay Sound Locationを繋いでSoundにRifleA_Fire_Cueを設定する
2.GetSocketTransformとPlay Sound LocationのLocationを繋ぐ
ここまでで発砲時のサウンドが鳴るようになる

最終的なBP_Player


実行結果

https://twitter.com/JY20160816/status/1581859264179544064

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

初めてのUnreal Engine5でミニゲーム制作(作業まとめ)

Unreal Engine5でミニゲームを作ったのでやったことをまとめておきます。
初めてということでこちら動画を見ながら真似して作りました。

実装した項目
・コインを取ったらエフェクトを出してポイントを加算してUIに反映させる
・ボムに触れたらエフェクトを出してダメージを受けてHPゲージを減らす
・ハートを取ったら体力を回復してHPゲージを増やす

作業手順(タイトルをチェックすると動画説明に飛べます)

1.プロジェクトの作成

Epic Game Luncharを立ち上げてプロジェクト名を付けて作成する

2.マーケットプレイスから必要なアセットをダウンロードする

niagraというビジュアルエフェクトを使うのでダウンロードする

3.フォルダの作成

content Browserを開き、右クリックNew Flolderを選択して、Contentの中にBluePrints、Materials、UIの3種類のフォルダを作成する

4.コインのブループリントの作成

右クリック→BluePrintClass→Actorで作成してBP_Coinと名付ける
左側のAddをクリックしてStatic Meshを選択し追加する
Static Meshを選択した状態で右側のStatic MeshからSM_Cylinder選択してサイズを調整する(Scale X 0.3 Y 0.3 Z 0.1)

5.コインのマテリアルの作成

Meterialsフォルダを開く→右クリック→Material→M_Yellowと名付ける
右クリック数字の3で検索してConstant3Vectorを選び色を変更してBaseCollorへノードを繋げる
BP_Coinに戻りStatic_Meshから右側のMaterialからM_Yellowを設定すると色が変わる

コインにぶつからずに貫通するようにして上下に動かす

BP_Coinに戻りStatic_Meshから右側のCollisionのCollisionPresetをBlockAllDynamicからOverlapAllDynamicにする(物体を貫通するようになる)
SetActorLocationを追加してEventTickにノードを繋ぐ
以降は以下の様にする

コインに当たったらエフェクトを出すようにする

BP_CoinのStatic_Meshから右クリック→AddEvent→AddOnComponentBeginOverlapを追加して以下のようにする

ボムのブループリントの作成

右クリック→BluePrintClass→Actorで作成してBP_Bombと名付ける
左側のAddをクリックしてStatic Meshを選択し追加する
Static Meshを選択した状態で右側のStatic MeshからSherer選択してサイズを調整する(Scale X 0.2 Y 0.2 Z 0.2)

ボムのマテリアルの作成

コインと同じでM_Redと名付ける

ボムにぶつからずに貫通するようにして左右に動かす

BP_Bombに戻りStatic_Meshから右側のCollisionのCollisionPresetをBlockAllDynamicからOverlapAllDynamicにする(物体を貫通するようになる)
SetActorLocationを追加してEventTickにノードを繋ぐ
以降は以下の様にする

ボムに当たったらエフェクトを出すようにする

BP_BombのStatic_Meshから右クリック→AddEvent→AddOnComponentBeginOverlapを追加して以下のようにする

Healthのブループリントの作成

右クリック→BluePrintClass→Actorで作成してBP_Healthと名付ける
Static_MeshがないのでniyagaraのNS_pickup3とBoxCollisionを追加する

Healthのマテリアルの作成

コインやボムと同じでM_Healthと名付ける

Healthを取ったらエフェクトを出す

今まで作ったアクターのイベントが起きたらUIに反映させる

UI_Playerを作成してテキストとプログレスバーを追加


BP_ThirdPersonCharacterを開き以下のノードを追加してと変数Point(int)とHealth(float)とMaxHealth(float)を追加

UI_Playerに戻りのPointを変化させたいUIをクリックして右側のcontent→text→CreateBandingで以下のノードを追加する

UI_Playerに戻りのプログレスバーをクリックして右側のcontent→text→CreateBandingで以下のノードを追加する

BP_Coinに追加

BP_Bombに追加

BP_Healthに追加

実行結果

https://twitter.com/JY20160816/status/1579041965131591680

ここまででコインとボムとライフの実装が終わりです。
Unreal Engine5は以前の4よりも使いやすくなってるのでマルチプレイができるのを目標にして勉強していきます!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索