UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 Audio Component内のイベントについて見ていく

えー、先日Audio Component内にイベントがあるということを「初めて」知りました。

知らないものの中に便利なものって結構あるんだな。と思いました。 

 

そこで今回はAudio Componentの中にあるイベントについて

まとめてみたいと思います。

 

使用したUE4のバージョンは4.16.2です。

f:id:MozPaca:20170728145521j:plain

 

(私の)準備

適当なブループリントを作成します。

コンテンツブラウザから右クリック→Blueprint Classを選択します。

f:id:MozPaca:20170728150108j:plain

 

親クラスはActorを選択してください。

f:id:MozPaca:20170728150223j:plain

 

適当な名前をつけて保存します。

f:id:MozPaca:20170728150327j:plain

 

イベントの出し方

作成したActorブループリントをダブルクリックで開きます。

 

左上のAdd ComponentからAudio Componentを追加します。

f:id:MozPaca:20170728150407j:plain

 

追加したAudio Componentを右クリックすると、

Add Eventから各イベントが出るので、必要なイベントを使ってください。

f:id:MozPaca:20170728150605j:plain

 

ここから本題

 

On Audio Finished (Audio)

f:id:MozPaca:20170728145027j:plain

オーディオ再生が完了した(最後まで演奏した)もしくは

Stop()などでオーディオを停止したときに走るイベントです。

 

爆発音を設定し、イベントが発生するとログが流れるように処理を書きます。

f:id:MozPaca:20170728154106j:plain

 

確認してみましょう。

再生が完全に終了したタイミングでログが流れると思います。

www.youtube.com

 

Physics Volume Changed (Audio)

f:id:MozPaca:20170728145042j:plain

Physics Volumeが変更されたときに走るイベントです。

New Volumeは変更後のPhysics Volumeの値を返します。 

 

New Volume(Physics Volume Reference)

変更後のPhysics Volumeの値を返します。

 

On Audio Playback Percent (Audio)

f:id:MozPaca:20170728145057j:plain

サウンドが再生されている間走るイベントです。

Playing Sound Wave(Sound Wave Reference)

現在Audio Componentによって再生されているサウンドファイルを返します。

 

Playback Percent(Float)
サウンドの再生時間を返します。

 

再生時間をログで表示する処理にしてみました。

f:id:MozPaca:20170729195058j:plain

 

www.youtube.com

 

 

On Component Activated (Audio)

f:id:MozPaca:20170728145113j:plain

Audio Componentが起動したときに走るイベントです。

 

Component(Actor Component Reference)

 

Reset(Boolean)

 

On Component Deactivated (Audio)

f:id:MozPaca:20170728145130j:plain

Audio Componentが無効化されたときに走るイベントです。

 

Component(Actor Component Reference)

 

ゲーム開始から5秒後にAudio Componentを
Deactiveノードで無効化します。

f:id:MozPaca:20170728161927j:plain

 

www.youtube.com

 

それぞれの全てを確認したわけではありませんが、

かなり有用なものが多いです。

 

どうして今まで知らなかったんだろう... 

 

UE4 マウスの感度調節機能を入れてみる

FPSなどのゲームでは、
自分に合わせてマウスやコントローラーの

感度を変更することが多いです。

 

今回はFPSテンプレートを使用して、
マウス感度の調節機能を作成したいと思います。

 

準備

今回はUE4 4.17.0 Preview 2を使用します。

f:id:MozPaca:20170726182632j:plain

 

First Person Templateを選択して、

プロジェクトを作成

しました。

f:id:MozPaca:20170726185128j:plain

 

FPSキャラクターの処理を追加する

まずはデフォルトのFirst Person Characterに処理を追加していきましょう。

 

Contents→First Person BP→Blueprintsから

First Person Characterをダブルクリックで開いてください。

f:id:MozPaca:20170726191221j:plain

 

このようになっていると思います。

f:id:MozPaca:20170726191433j:plain

 

変数を追加します。

マウス感度の値を格納するFloat型の変数を追加してください。

私はMouse Sensitivityという名前で作成しました。

f:id:MozPaca:20170726191455j:plain

 

作成したFloat型の変数のデフォルト値を1.0にします。
※0にするとカメラが一切動かなくなるからです。

f:id:MozPaca:20170726191635j:plain

 

次にデフォルト処理のMouse Inputの箇所を変更します。

f:id:MozPaca:20170726191759j:plain

 

先程作成した変数とAxis Valueを乗算し

Add Controller InputのValueに繋げます。

f:id:MozPaca:20170726191836j:plain

 

感度調整用のWidgetを作成する

キーボードなどで値を変更してもいいのですが、

味気ないのと記事が短くなってしまうので、

Widgetを作成していきます。

 

コンテンツブラウザから右クリック

User InterfaceWidget Blueprintを選択します。

f:id:MozPaca:20170726193539j:plain

 

適当な名前をつけしょう。

f:id:MozPaca:20170726193720j:plain

 

作成したWidgetを開き、Designer画面で

オブジェクトをこのように配置します。

f:id:MozPaca:20170726193908j:plain

Text BlockとButtonで構成されたシンプルな配置です。

50と書かれているText Blockはバインドして値を切り替えます。

 

Background Blurは過去記事を参考にしてください。

mozpaca.hatenablog.com

 

50と書かれたText Blockにバインドを作成し、

現在のマウス感度を表示するための処理を書きます。

f:id:MozPaca:20170726194216j:plain

 

Event Graphのタブを開き、処理を書いていきます。

 

まずはWidgetが作成されたタイミングで

マウスカーソルの表示とゲームにポーズを掛けます。

f:id:MozPaca:20170726194344j:plain

 

次にDesigner画面で配置したボタンそれぞれに

感度を増加/減少の処理を書きます。

Clampで感度の上限/下限を設定しています。

f:id:MozPaca:20170726194402j:plain

 

Widgetを呼び出す

レベルブループリントを開き、このように処理を書きます。

特定のキーを押した際にWidgetの有無によって、

生成と削除を分けています。

f:id:MozPaca:20170726194748j:plain

 

はーい。完成。

 

確認してみる

処理が完成したら、実行して確認してみましょう。

www.youtube.com

 

FPSテンプレートのデフォルトの速度は1に相当します。
5ぐらいから制御不能なので、実際にゲームに組み込む際は

そこらの調整が必要そうです。

 

UE4 リバーブ効果を試してみる

UE4にはレベルにぽいって置くだけで、
簡単にリバーブ効果をかけることができます。

バーブとは
reverbration(リバーブレーション)のことで、

よく残響と訳されます。

 

 

わかりやすいサイトがあったので、

こちらを参照してください。

info.shimamura.co.jp

 

今回はリバーブ効果を掛けるまでを記事にしたいと思います。

 

準備

プロジェクトは4.16.2を使用します。

4.17でも同じような感じだと思います(未検証)

f:id:MozPaca:20170724153218j:plain

 

プロジェクト作成後、作業に入っていきます。

 

それっぽい場所を作る

何もない場所でも処理を書けばしっかりと音が
跳ね返る(ように聞こえる)のですが、

やはり、まずは雰囲気からということで、

f:id:MozPaca:20170724153430j:plain

音が反響しそうな場所を作りました。

 

Audio Volumeを配置する

バーブ効果を掛ける範囲を指定するために

Audio Volumeを配置しましょう。

 

Audio Volumeはモードタブで検索すると出てきます。

f:id:MozPaca:20170724153506j:plain

 

バーブ効果を掛けたい範囲に、いい感じで配置してください。

f:id:MozPaca:20170724153516j:plain

 

Reverb Effectを作成する

Audio Volumeの配置ができたら

次にReverb Effectを作成します。

 

コンテンツブラウザから右クリック→Sounds→Reverb Effect

f:id:MozPaca:20170724154206j:plain

 

適当な名前をつけ、作成完了です。

f:id:MozPaca:20170724154358j:plain

 

作成したReverb Effectをダブルクリックで開くと、

このようにたくさんのパラメータが出てきます。

f:id:MozPaca:20170724154609j:plain

 

今回は変化を分かりやすくするため、

Gainの数値を上げています。

 

Gain...出力感度みたいなの。

 

Reverb EffectをAudio Volumeに適応する

先程レベルに配置したAudio Volumeを選択した状態で、

Detailsタブを見てください。

 

こんな感じになっていると思います。

f:id:MozPaca:20170724160132j:plain

 

このReverb Effectの欄に作成したReverb Effectを入れます。

 

入れました。

f:id:MozPaca:20170724160238j:plain

 

これで完成です。
Audio Volumeの範囲内で再生された音に

バーブ効果が掛かると思います。

 

せっかくなので

というか普通の音では分かりにくいので、

足音を鳴らしてみたいと思います。

 

mozpaca.hatenablog.com

 

mozpaca.hatenablog.com

 

足音の再生に関しては前に記事を書いたので、

過去記事を参考にしてもらえると助かります。

 

やってみた

www.youtube.com

 

洞窟内?では足音が響いてる感じに聞こえると思います。

 

UE4 バーチャルパッドについての備忘録

1週間に記事を最低1つは書く...そんな風に思ってた時期もありました。

2週目にして既に心が折れ、ネタも無い...

 

というわけで備忘録ついでに記事にすることにしました。

今回はスマホ系の制作をしていると必ず見かける

バーチャルパッドについて書きたいと思います。

f:id:MozPaca:20170627201155j:plain

 

今回の記事を書くにあたって

UE4 4.16.1のプロジェクトを使用しています。

f:id:MozPaca:20170627201259j:plain

 

バーチャルパッドの設定はどこ?

バーチャルパッドはプロジェクトをスマホ/タブレット向けに

作成するとデフォルトで描画されます。

 

このバーチャルパッドの設定をする場合には

左上のEditからProject Settingsを開きます。

f:id:MozPaca:20170627201453j:plain

 

EngineからInput→Mobileの

Default Touch Interfaceを編集します。

f:id:MozPaca:20170627201502j:plain

 

Engine Contentsを可視化していない場合、

タブを開いても何も見つからないので、

右下のView Optionsから

Show Engine Contentsにチェックを入れます。

f:id:MozPaca:20170627201512j:plain

 

映るようになりました。

f:id:MozPaca:20170627201525j:plain

 

この2つはそれぞれ、このような形になっています。

 

【Default Virtual Joysticks】

f:id:MozPaca:20170627201546j:plain

 

【Left Virtual Joystick Only】

f:id:MozPaca:20170627201555j:plain

 

バーチャルパッドを消したい場合

パッドの選択画面でClearをクリックすることで

パッドを消すことができます。

f:id:MozPaca:20170627201609j:plain

 

消えた。

f:id:MozPaca:20170627201619j:plain

 

その他

また、Touch Interfaceをカスタマイズすることにより

パッドの見た目を大きく変更することができます。

www.youtube.com

今回はデフォルトのパッドをカスタマイズして、

私のTwitterアイコンをパッドとして扱ってみました。

 

 

UE4 Dopplerノードを試してみた

UE4のSound Cueの中にDopplerというノードがあります。

今回はこのDopplerノードを使って見たいと思います。

 

ちなみに

ドップラー効果(ドップラーこうか、英語: doppler effect)

またはドップラーシフト(英語: doppler shift)とは、

波(音波や電磁波など)の発生源(音源・光源など)と

観測者との相対的な速度の存在によって、

波の周波数が異なって観測される減少をいう。

by wikipedia

 

救急車のピーポーピーポーとかが、

分かりやすい例だと思います。

 

準備

では、そのピーポーピーポーを作りましょう。

適当な作曲ソフトで「シーソーシーソー」と打ち込み、

救急車のサイレン音を.wavで書き出します。

f:id:MozPaca:20170621173409j:plain

 

書き出しました。

f:id:MozPaca:20170621174041j:plain

 

ちなみに作ったものはこんな感じ。

サイン波のシーソーシーソーです。

(モノラル音源です)

www.youtube.com

 

プロジェクトを作成する

UE4のプロジェクトを作成していきます。

バージョンは4.16.1を使用します。

f:id:MozPaca:20170621173953j:plain

 

テンプレートは使用せず、Blank Projectで

Starter Contentsは無しにして作成します。

f:id:MozPaca:20170621174325j:plain

 

作りました。

f:id:MozPaca:20170621174427j:plain

 

Sound Cueを作成する

先程作成した.wavファイルをUE4プロジェクト内にインポートします。

f:id:MozPaca:20170621174711j:plain

 

インポート完了後、wavファイルを

右クリックからキューを作成を選択します。

f:id:MozPaca:20170621174920j:plain

 

.wavファイルのSound Cueが作成されました。

f:id:MozPaca:20170621175022j:plain

 

減衰ファイルを作成する

次にサウンドを距離によって音の大きさを変更するために

Sound Attenuation(サウンド減衰)を作成します。

 

コンテンツブラウザを右クリックから、

Sound→Sound Attenuationを選択します。

f:id:MozPaca:20170621175147j:plain

 

作りました。

f:id:MozPaca:20170621175157j:plain

このファイルを開くと、減衰用のパラメータの変更が可能です。

今回は「ほぼ」デフォルトのままです。

 

Sound Cueを編集する

作成したSound Cueファイルを開きます。

 

まずはwaveノードを選択し、

左側のDetatilsタブのLoopingにチェックを入れます。

これでサウンド終了後に自動的に初めから再生されます。

f:id:MozPaca:20170621175102j:plain

 

次にOutputノードを選択し、

DetailsタブのAttenuation Settingに

先程作成した、減衰ファイルを入れます。

f:id:MozPaca:20170621175754j:plain

 

そしてWaveノードとOutputノードの間に

Dopplerノードをはさみます。

f:id:MozPaca:20170621180344j:plain

 

通り過ぎる物体を作成する

別に作成せずとも自分が動けばドップラー効果

確認できますが、せっかく作ったので手順を書いておきます。

 

コンテンツブラウザから右クリック

Blueprint Classを選択します。

f:id:MozPaca:20170621180454j:plain

 

親クラスはActorクラスを使用します。

f:id:MozPaca:20170621180719j:plain

 

作りました。

f:id:MozPaca:20170621180748j:plain

 

ブループリントを編集する

作成したActorブループリントを開き、

コンポーネントを追加からAudioコンポーネントを追加します。

f:id:MozPaca:20170621180921j:plain

 

AudioコンポーネントのパラメータにSoundというものがあるので、

先程編集したSound Cueファイルを入れておきます。

f:id:MozPaca:20170621181015j:plain

 

次に視覚的にわかりやすくするために、

球体のStatic Meshコンポーネントを追加します。

f:id:MozPaca:20170621181111j:plain

 

最後にイベントグラフで

このように処理を書きます。

f:id:MozPaca:20170621181207j:plain

毎フレームY軸に-3ずつ移動します。

 

これでブループリントの編集は終了です。

 

レベルにブループリントを配置する

このようにActorブループリントをレベル上に配置します。

Audioコンポーネントに入れたSound Cueが

再生されながら自分に近づいてきて、遠下がっていくと思います。

f:id:MozPaca:20170621181258j:plain

 

確認してみる

実行して確認してみましょう。

www.youtube.com

(パラメータを色々変更しました)

 

私の調整が下手なせいかイマイチ

ドップラー効果が実感できませんが、

ノードひとつでエフェクトを掛けられるので

非常に面白いと思います。

UE4 マウスホイールを使用してゲーム中にカメラのズームイン/アウトを実装する

今更解説もいらないシリーズの続編です。
今回はゲーム中にマウスホイールをコロコロしたら
カメラが近寄ったり、遠のいたりする処理を実装します。

 

バージョンは4.16.1を使用します。

f:id:MozPaca:20170605230633j:plain

 

ではやっていきます。

 

準備

いつものごとくプロジェクトを作成しましょう。

テンプレートをThird Personを使用します。

f:id:MozPaca:20170605230903j:plain

 

作りました。

f:id:MozPaca:20170605230944j:plain

 

入力用の設定を行う

プロジェクト作成後、左上のEditから

Project Settingsを開きます。

f:id:MozPaca:20170605231042j:plain

 

Engine→InputからAction Mappingsに

ZoomIn : Mouse Wheel Up

ZoomOut : Mouse Wheel Down

を追加します。

f:id:MozPaca:20170605231054j:plain

 

処理を書く

Action Mappingsに追加ができたら、

次にコンテンツブラウザから

ThirdPersonBP→ThirdPersonCharacterを開きます。

f:id:MozPaca:20170605231109j:plain

 

このように処理を組みます。

入力イベントから一定の値をTarget Arm Lengthに渡しています。

またClamp(float)を使用することで、上限下限を設定しています。

f:id:MozPaca:20170605231120j:plain

 

これで処理は完了です。

 

確認する

デバッグ用にPrint Stringを処理のあとに追加しました。

www.youtube.com

 

今回は50という値を入れましたが、

もっと小さい数字を入れるとマウスホイールの

操作が活きてくると思います。

 

UE4 Modular Synthを触ってみる。

4.16のPreview1からちょっとずつ触っていたのですが、

ある程度理解できた(と思う)ので記事にまとめておきたいと思います。

 

マニアックな機能だとは思いますが、

かなり情報が少ないです。タスケテ...

誰か!日本語で!解説記事お願いします!

 

ではやっていきましょう。

 

準備

今回はUE4 4.16 Preview3を使用します。

f:id:MozPaca:20170514163142j:plain

 

適当なテンプレートからプロジェクトを作成しましょう。

私はThird Person Templateを使用しています。

 

プロジェクトが作成できたら、

左上のEdit→Pluginを開いてください。

f:id:MozPaca:20170514163305j:plain

 

Audioタブに「Synthesis」というプラグインがあるので、

これにチェックを入れ、エディタを再起動しましょう。

f:id:MozPaca:20170514163229j:plain

 

ブループリントを作成する

再起動が完了したら、コンテンツブラウザから

右クリック→Blueprint Classを選択します。

f:id:MozPaca:20170514163812j:plain

 

名前は適当にBP_SoundActorにしました。

f:id:MozPaca:20170514163918j:plain

 

ActorにComponentを追加する

BP_SoundActorをダブルクリックで開きます。

左上のAdd Componentから

「Modular Synth」を追加します。

f:id:MozPaca:20170514164205j:plain

 

階層は適当でいいと思います。

f:id:MozPaca:20170514164242j:plain

 

Blueprintに処理を書く

Componentを追加できたら、

このように処理を書きます。

f:id:MozPaca:20170514164532j:plain

CキーでNote Onを呼び出し、音を鳴らし始め

VキーでNote Offを呼び出し、音を鳴らすのを止めます。 

 

f:id:MozPaca:20170514165821j:plain

Note Onは鍵盤などを「押した」という信号を送るものです。

 

Noteの中に入っているFloat型の数値は

Note Numberと言われるもので、それぞれに音を表しています。

上の画像のように60にすると4C、鍵盤の真ん中のドの音の

信号を送ります。

 

Velocityは音の大きさです。

数値が高ければ大きく、低ければ小さくなります。

 

Durationは音の再生時間です。

5にすると5秒間音を鳴らすという感じになります。

 

f:id:MozPaca:20170514170603j:plain

Note OffはNote Onと反対に音の信号を送るのを止めるものです。

 

Note Onを繋げてNote Numberを打ち込んでいけば

こんな感じに演奏もできます。

※音が小さいので、大きくして再生してください。

www.youtube.com

 

話を戻しまして、

Note On、Note Offにそれぞれパラメータを入れていきます。

・Note : 60

・Velocity : 120

・Duration : -1

f:id:MozPaca:20170514182322j:plain

これでCキーを押すとドの音が120の大きさで永続的(-1)に再生されます。

 

次にModular Synthのパラメータ変更処理を書いていきます。

Modular SynthにはたくさんのSet関数があり、

たくさんのパラメータがあります。

f:id:MozPaca:20170514182714j:plain

すべてModular SynthのSet関数です。

(まだ見落としがあるかも...)

 

これらすべての処理を書いていくのは大変なので、

今回はSet Synth Preset関数を使用します。

f:id:MozPaca:20170514182939j:plain

中に全てのパラメータが管理されており、

このノードを更新することで、パラメータを反映させることができます。

 

ではModular SynthからSet Synth Presetノードを出しましょう。

f:id:MozPaca:20170514182512j:plain

 

次にSynth Presetから線を引っ張り、

Promote to Variableで変数を作成します。

f:id:MozPaca:20170514183134j:plain

 

変数名は何でもいいです。

f:id:MozPaca:20170514183121j:plain

 

扱いやすくするために変数をPublicにしておきましょう。

f:id:MozPaca:20170514183258j:plain

 

この作成した処理をEvent Tickに繋げます。

f:id:MozPaca:20170514183350j:plain

これで処理は完成です。

 

実行してみる

Actorをレベルに配置し、実行してみましょう。

f:id:MozPaca:20170514183436j:plain

 

実行したら指定したキー(今回はCキー)を押してみましょう。

恐らく、なんとも言えない音がなると思います。

動画のようにPublicにした変数をいじることで、

一応動的にパラメータを変更することもできます。

www.youtube.com

 

触りとしてはこんな感じではないでしょうか?
手元にMIDIコントローラーがあれば色々試せそうですが、

私の手元には無いので、今回はここまで。

 

-- 追記 --

※キーボードイベントを使用する場合はPlayer Characterに設定するなどで、

イベントが取得できるようにしてください。

f:id:MozPaca:20170514164444j:plain