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?

【UE5】あちこちから話し声が飛んでくるというホラー?なBP作ってみた

Last updated at Posted at 2024-08-26

こんにちは! サウンド実装となると必要以上に熱くなるUE使い、kabgoyaです♪

今作っているゲームに実装したら思ったより面白くなかったのですが
Blue Print自体は何かの役に立ちそうなので備忘録として投稿いたします。

どんな仕組み?

トリガーボリューム内でいろんな位置から話しかけられる(音が再生される)、と言った仕掛けです。
その方が不気味さが増すかな?と思ったのですが実装するレベルの関係でBGMとして流した方が不気味だった、というオチ(´・ω・`)

#音は見えないのでキャプチャはイメージ
01.png

素材のインポート

用意するもの
ランダムに再生する音声をたくさん
#10個以上あった方が楽しいかも。
#UE5.4はMP3もsoundwaveとして扱えるようになったけど音声ファイルは.wavで渡した方が親切
#あと、ファイル名は半角英数で、kabgoyaとの約束だ!

素材が集まったらフォルダごとコンテンツブラウザにドラッグアンドドロップしてインポート
インポートボタンを使うなどの判断はお好みで
image.png

Sound Cueの作成

Sound CueはUnreal Engineの音声アセットのひとつ
ランダム再生とかちょっとした音量調整とかできるので覚えといた方が便利なやつ
image.png

ランダムに再生させるにはSound Cueのノードをこんな感じで組み立てる
image.png
げっ?!
って思ったそこのあなた、ご安心ください。
今回楽にこのノードが組める方法を見つけました。
#知ってる人はスルーしてください

インポートしたフォルダのサウンドウェーブを全選択し右クリック
メニュー上の方にある単一のキューを作成をクリックすると…
image.png

image.png
中身がそのままRandom化!
Wave Playerが自動で作られたらラッキー!ぐらいの認識でやってみたら想像以上に便利だったので得しました!
RandomVoice_Cueと名付けリバーブを掛けたかったのでアテニュエーション(減衰)の設定をちょっとしてSoud Cueの作業は終わり。
#本筋を大幅にそれるので今回、減衰やリバーブの話は割愛します。

素材側のBlue Print Classを作成

正直、SoundCueのまま再生する方法もあります
しかし実装する場所はゲームなのでメモリ負荷のことを考える必要もあります。詳しくは知らんけど。
なので役目を終えたら自ら消滅する仕掛けを作ります。

Blue Print Classを作成しBP_RandomVoiceと名付けます。
オーディオコンポーネントを追加し詳細>サウンド>SoundにRandomVoice_Cueを指定します

イベントリストはこんな感じ
image.png
Delayの値は再生する音声ファイルの長さで変えてください
#Delayを入れないとすぐDestroy Actorが効いてしまうので肝心の音が聞こえてこない

レベルにトリガーボリュームを配置

image.png

PlayしてもわかりやすいようにPlaneを敷きました

ボイスをランダムに発生させる範囲を決めるためTrigger Volumeを配置します。

え?Audio Volumeでなくて?

Blue Print Classをランダムに発生させると考えたのでTrigger Volumeにしました
理論上はAudio Volumeでもいけると思う。
注意点はブラシセッティングで大きさを設定して下さい
理由は後で使うからです。
image.png
今回は X:1000.0 Y:1000.0 Z:400.0 にしました。

レベルブループリントに実装

使いまわしできるようにブループリントクラス化するか悩みましたが
他レベルでの使い回しを検証する時間がなかったのでレベルブループリントに実装します。

Trigger Volumeの参照ノードを追加

Trigger Volumeを選択した状態でレベルブループリントを開き右クリックでCreate a Reference to Trigger Volumeを選択しトリガーボリュームの参照ノードを出します。
image.png

カスタムイベントノードを追加

右クリックし検索窓にadd Custom Eventと入力しカスタムイベントノードを作成しSpawnVoiceと名付けます。
以下のようにノードを接続します。
image.png

  1. Spawn Actorノードには先程作ったBP_RandomVoice を選択します
  2. Random Point in Boundinx BoxのHalf Sizeの中にTrigger Volumeのブラシセッティングの値を入力します。
    #探せど参照する場所がわからなかったので手入力です…

Event Begin Playで実行

Event Begin Play側はこんな感じ
image.png
Set Timer By EventのTimeはお好みで変更して下さい。

結果

プレイしたらこんな感じになります
ヘッドフォンをするといろんな場所から話しかけられている感覚がわかるかと思います。

#不気味さを増したいのでレベルにリバーブを掛けています。
#音声は使用許可済です。

レベルの中に遮蔽物(壁など)が多いと3Dサウンドがうまく働かないようです。
もしかしたら臨場感を出したくて減衰のオクルージョン設定を触ったのがうまくいかないのかもしれませんが
検証できたら追記します。

それでは良きサウンド実装ライフを!

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?