CG関係の備忘録ブログ

主にZBRUSH、blender

UE5 ダメージとリスポーン

参考動画

Unreal Engine 4 #44 元の位置にキャラをリスポーンする - YouTube

 

参考HP

TTPS_05.KillZを使った落下死とリスポーン | ueHow-日本語

 

レベルブループリント(ダメージを与える)
イベントKキーPressedからApplyDamageにつなぐ
GetPlayerPawnからDamageActorにつなぐ

プレイヤーのBP?
イベントAnyDamageからDoOnceを通して
DisableMovementにつなぐ
CharacterMovementをターゲットにつなぐ
SetLifeSpanにつなぎ、InLifeSpanに5秒を設定すると
5秒後にDestoryする

5秒カウント中にダメージイベントが発生すると再度5秒カウントを防ぐため、DoOnceを入れている

GameModeのBPを開く
FindPlayerStartから引っ張りGetActorTransformを追加
RM→OnDestroyedにイベントをバインドを追加
イベントから引っ張りRespwanPlayerを追加
RespwanPlayerから引っ張りSpawnActorPNPlayerPawnを追加
引っ張りPossessを追加
RM→GetPlayerControllerを追加、Possessにつなぐ
PossessからOnDestroyedにつなぐ

※クラスからアクタをスポーン(SpawnActorPNPlayerPawn)
ClassをプレイヤーのBPを指定

※Possess
Destoryすると、メッシュとコントローラーの接続が切れてしまう?ため、それをつなぐ役割

※AnyDamageはこのアクタが何らかのダメージを受けると発動
※OnDestroyedにイベントをバインドは一度プレイヤーがDestoryされると外れてしまうため、再度付け直す必要がある
まずイベントBeginPlayからつなぎ、2回目以降はPossessからつなぐ

※ワールドセッティング→ワールド→キルZ
プレイヤーのZ値がこの値になったら死ぬ

 

まだ実装したことないので今後おいおい・・・

UE5 ビルド沼

予想通り沼やった・・・

 

公式のドキュメントに書いてある「プロジェクト ランチャー」が見つかりません・・・

さらに読んでいくと、スタンドアロンの「Unreal Frontend」でできるらしい・・・

で、英語ニキの

How to Package Games/Projects with UNREAL FRONTEND - YouTube

を見たがさっぱりわからん・・・とりあえず見よう見まねでやってみたが、なんか空回ししてる雰囲気しかない

 

色々探し回って見つけたのがこちら

UnrealEngine5でパッケージ化できなくね…?となった時の対処方法。※『インストールしたSDK』に数値を表示させる方法【UE5/SDK/パッケージ化】 - YouTube

 

神動画のおかげで初ビルドできました

以下参考HPはおいおいやってみよう・・・今日は疲れた

 

その他参考HP

UE4 リリース向けパッケージを作る際にやるべきこと - Let's Enjoy Unreal Engine

UE4 一番お手軽にパッケージング時のサイズを最適化する方法 - Let's Enjoy Unreal Engine

UE5 BGMの音量調節

参考HP

UE4 音量調節のオプションメニューを作る - UE4初心者が頑張ってるブログ

 

最初は独自に色々と試してみたが、BGMを聴きながらボリューム調整ができない・・・

ということで、参考HPの通りにやったらできた

 

SetSoundMixClassOverrideはイベントOnMouseCaptureEnd(VolumeSlider)からつなげた

 

音量の変数はBP_GameInstanseに持たせてグローバル変数にして各レベルから参照できるようにした

 

参考HP

UE4 GameInstanceでグローバルに値を扱う - UE4初心者が頑張ってるブログ

UE5 デバッグ関係

ユーザーインターフェースの作成をしているときに、BoxTriggerを踏んでもClear画面に遷移しないバグが発生

 

スタートから5秒以内であればClear画面に遷移することを発見

レベルブループリントの他の処理でDestroyActorを使用していたことが原因

切線したらうまくいった

 

BoxTriggerとDestroyActorは競合するらしい

UE5 今日覚えた事

レベルブループリント
画面上のノードアイコン→レベルブループリントを開く
通常のBPのように配置する必要なし

スポーン
イベントBeginPlayを追加、引っ張りSpawnActorfromClassを追加
ClassにスポーンさせたいActorを選択
SpawnTransformを構造体ピンを分割
変数を追加、名前をStartLocation
コンパイル・セーブ初期値を入力
StartLocationをドラッグしてGetで配置、SpawnTransformLocationにつなぐ

落下させる
BP_Coinを開きCoinを選択、物理のSimulatePhysicsにチェック
イベントTickを追加
上のクラスのデフォルトをクリック
アクタティックのTick Interval (secs)を0.1
コンパイル・セーブ
テスト

5秒間発生させる
SpawnActorfromClassから引っ張りDelayを追加
5秒に設定
Delayから引っ張りDestroyActorを追加
コンパイル・セーブ
テスト

UE5 ユーザーインターフェース

参考HP

[UE4] 時間制限のあるゲームの作り方|株式会社ヒストリア

 

UE4でプレイ時間をUserWidgetで表示する

 

成果

www.youtube.com

 

レベルとウィジットでユーザーインターフェースをつくる
レベルフォルダを作成、RM→空のレベルを作成
UIフォルダを作成、RM→空のウィジットを作成

 

ウィジットを開く
パネルのCanvasPanelをドラッグして配置
一般のTextをドラッグして配置、コンテンツ→Textを変更
ボタンをドラッグして配置、Textをドラッグして配置、ボタンの子に設定、PLAYを入力

Back To Title
Clear

 

レベルを開く
レベルブループリントを開く
イベントBeginPlayから引っ張りウィジットを作成(CreateWight)を追加
Classでウィジットを選択
ウィジットを作成から引っ張りAddToViewPortを追加
ReturnValueとターゲットをつなぐ
ウィジットを作成のOwningPlayerから引っ張りGetPlayerControllerを追加
ReturnValueから引っ張りSetInputModeUIOnlyを追加
ReturnValueから引っ張りSetShowMouseCursorを追加
AddToViewPortからSetShowMouseCursorをつなぐ
SetShowMouseCursorからSetInputModeUIOnlyをつなぐ
SetShowMouseCursorにチェックを入れる

他のレベルにノードをコピペしてClassでウィジットを選択

プレイ画面の場合は
SetInputModeUIOnlyをSetInputModeGameOnlyに変更
SetShowMouseCursorにチェックを外す

 

時間制限機能
プレイ画面のウィジットを開く
右上のグラフをクリック
変数を追加、名前をDeltaTime、TimeLimit変数の型をFloat
コンパイル・セーブ
TimeLimitのデフォルトを10秒

変数DeltaTimeをドラッグしてSet配置、イベントTickとつなぐ
イベントTickのInDeltaTimeとDeltaTimeをつなぐ
変数TimeLimitをドラッグしてSet配置、SetDeltaTimeとつなぐ
RM→引き算を追加、変数GetTimeLimit-変数GetDeltaTime、結果をSetTimeLimitにつなぐ

右上のデザイナーをクリック
数字用のTextボックスを選択、コンテンツ→バインド→バインディングを作成
変数TimeLimitをドラッグしてGet配置、リターンノードのReturnValueにつなぐ

 

画面遷移の設定
Titleウィジットを開く
ボタンを選択、詳細→イベントのOn Clickedの「+」
イベントOnClickdeから引っ張りOpenLevelを追加
LevelNameに遷移先のレベル名を入れる

GameOverウィジットを開く
Restartボタンを選択、詳細→イベントのOn Clickedの「+」
イベントOnClickdeから引っ張りOpenLevelを追加
LevelNameに遷移先のレベル名を入れる

Play画面→GameOver画面
プレイ画面のウィジットを開く
右上のグラフをクリック
イベントグラフタブをクリック
SetTimeLimitから引っ張り比較演算子<(以下)を追加
<から引っ張りBranchを追加
SetTimeLimitとBranchをつなぐ
Trueから引っ張りOpenLevelを追加
LevelNameにGameOverを入れる

Play画面→Clear画面
ゲームClear条件の設定
プレイ画面のレベルを開く
上の箱をクリック→基本→TriggerBoxをクリックして配置
または上の箱をクリック→アクタ配置パネルからTriggerBoxをドラッグして配置

 

アウトライナーでRM→「AddEvent」から 「OnActorBeginOverlap」を左クリックすると、レベルブループリントに新たなイベントが追加?できん


レベルブループリントを開き
RM→上のTriggerBoxなんちゃら~にイベントを追加→コリジョン→OnActorBeginOverlapを追加でできた

 

OnActorBeginOverlapのOtherActorから引っ張りCastToThirdPersonCharacterを追加
引っ張りOpenLevelを追加
LevelNameにClearを設定

 

表記を分:秒に変更
TimeLimitを開き
変数Minutes、Integerを追加
変数Seconds、Integerを追加

イベントグラフで
計算後のTimeLimit/60をSetMinutes
計算後のTimeLimit Fmod 60をSetSeconds
※余り計算はFmod
SetTimeLimit、SetMinutes、SetSeconds、Branchとつなぐ

GetText0グラフでToTextを開き最大、最小表示桁数を指定する

UE5 今日覚えた事

参考HP

[UE4]超初心者向け!UE4でサウンドを鳴らそう!|株式会社ヒストリア

 

音を出す

 

出したいところにノードSound2Dを追加してAudio素材を選択する

 

結果

 

www.youtube.com

 

UE4が対応しているオーディオファイルの形式は16bit wavファイルのみとなります。

もし、素材がmp3やoggなどwav以外の形式であった場合、wavに変換する必要があります。