UE4 簡単な落下ダメージ処理を組む
落下ダメージには滞空時間で計算を行うものや、
落下距離で計算を行うものなど色々ありますが、
今回は落下速度で判定を行いたいと思います。
使用するバージョンはUE4 4.18.3です。
準備
まずはThird Person Shootingテンプレートからプロジェクトを作成しましょう。
落下ダメージがわかりやすいようにレベルを少し変更しています。
処理を組む
早速処理を組んでいきましょう。
Contents→ThirdPerson→ThirdPersonCharacterBPを開きます。
今回の処理の主役はGet Physics Linear Velocityノードです。
ターゲットの速度を取得するノードです。
これを着地時に呼び、そのReturn ValueのZ値を計算に使用します。
処理の全体図としてはこのような感じになります。
順番に見ていきましょう。
まずEvent Tickから処理が流れ、
Character Movementの持つIsFallingがTrueかFalseかを調べます。
Falseに処理が流れた場合、地面にいる状態ですので
IsFallingがFalseになった一番最初(つまり着地)のときだけ処理を続けます。
逆にTrueの場合は空中にいることになるのでDoOnceをリセットしておきます。
着地時の処理がGet Physics Linear Velocityに流れてきました。
このときのZの速度が-999より大きい場合は
無事着地したということでダメージ処理はありません。
-1000より小さかった場合は落下速度の半分の値をダメージとして処理します。
(このあたりの計算はうまくやってください。)
完成です。
ダメージを受け取る
確認用にこんな感じで組んでみました。
確認してみる
低いところからの落下ではダメージはありませんが、
高いところからの落下はきちんとダメージが入っていると思います。
※-592.239502とダメージが入っています。
UE4 Audio Listener周りの備忘録
Audio Listenerはゲーム内での耳にあたる部分です。
ゲーム内のどの位置に耳があり、どの方向を向いているのかなどを設定します。
FPSなどではあまり恩恵を感じませんが、
Top DownやThird Personなどでは音周りが大きく変わってきます。
UE4ではCameraの位置がデフォルトになっています。
今回はこのAudio Listener周りの処理について書いていきます。
使用しているバージョンはUE4 4.18.3です。
ブループリントエディタでAudio Listenerと検索すると、
このようなノードが出てきます。
1つずつ見ていきましょう。
Set Audio Listener Override
Audio Listenerの位置を変更するためのノードです。
詳しい使い方はこちら
ComponentにAttachする、
もしくはLocationとRotationを数値で指定することで
Audio Listenerの位置を更新することができます。
Player ControllerがTargetになるので、
Player Controllerのブループリント以外に書く場合は、
Get Player Controllerノードなどを接続してください。
Clear Audio Listener Override
Set Override Listener Overrideで変更された
Audio Listenerを初期化します。
Audio ListenerがAttachされている場合は、
nullptrで上書きされます。
このノードを使用してもAudio Listenerがなくなるわけではなく、
現在Playerが見ている座標、向きに再設定されます(デフォルト設定になる)
Set Override Listener Overrideと同じく、
Player ControllerがTargetです。
Are Any Listener Within Range
指定した範囲内にAudio Listenerが存在するかを判定するノードです。
円形の範囲を走査します。
引数のLocationには走査範囲の中心
Maximum RangeにはLocationからの半径を指定できます。
走査した範囲内にAudio Listenerがあれば、
Return ValueにTrue、
なければFalseが返ってきます。
Target はWorld Staticsです。
Set Global Listener Focus Parameters
Global Listenerの焦点パラメータの設定用ノードです。
(使ったことない)
Focus Azimuth Scale
音の焦点が合っている方位学を定義するスケーリング値です。
Non Focus Azimuth Scale
音の焦点が合っていない方位学を定義するスケーリング値です。
Focus Distance Scale
焦点が合っている音に対して使用する距離尺度です。
1より小さい場合は音までの距離が減少、
1より大きい場合は音までの距離が増加します。
Non Focus Distance Scale
焦点が合っていない音に対して使用する距離尺度です。
1より小さい場合は音までの距離が減少、
1より大きい場合は音までの距離が増加します。
Focus Volume Scale
焦点の合っている音の音量減衰値です。
Non Focus Volume Scale
焦点の合っていない音の音量減衰値です。
Focus Priority Scale
焦点の合っている音の優先度です。
1より大きい値は優先度が高くなり、
1より小さい値は優先度が低くなります。
Non Focus Priority Scale
焦点のあっていない音の優先度です。
1より大きい値は優先度が高くなり、
1より小さい値は優先度が低くなります。
TargetはWorld Staticsです。
余談
C++限定になりますが(ブループリントにはない)
現在のAudio Listenerの座標と向きを取得する
Get Audio Listener Positionという関数があります。
UE4 Sound Classを使ってみよう2
前回に引き続き、Sound Classについて書いていきます。
今回はSound Classを使用して、
Volumeの管理をやっていきたいと思います。
準備
今回もUE4 4.18.2を使用します。
プロジェクトを作成します。
デフォルトで音が入っているFirst Person Templateを選択し、
Starter Contentsを有りにしておきます。
作成しました。
Sound Classを作成する
コンテンツブラウザを右クリックから
Sounds→Sound Classを選択します。
効果音全体を管理するSound Classを作成します。
Sound Classの親子付けを行う
作成したSound Classを開き、子Sound Classを作成します。
銃弾の音を管理するSound Classを作成します。
このようになったと思います。
同じ要領で爆発音を管理するSound Classを作成します。
※自分なりの命名規則を無視してますが、気にしないでください。
Sound CueにSound Classを適応する
First Person→Audioフォルダにある
FirstPersonWeaponTemplateWeapnFire02から
Sound Cueを作成します。
こんな感じですね。
作成したSound Cueを開き、Sound Classの
SC_Bulletを設定します。
次にStarter ContentsのAudioフォルダにあるExplosion_Cueを開きます。
こちらにはSound ClassのExplosionを設定します。
パラメータを変更する
それではSound Classのパラメータを変更して、
音がどのように変化するのかを見ていきましょう。
※今回はVolumeのみ変更します。
Sound Mixで使用するパラメータもあるので機会があれば...
仮に親のVolumeパラメータを100にしたとしましょう。
こうすると、子Sound ClassのSC_BulletとExplosionを設定している
Sound CueのVolumeも100になります。
今度はSC_BulletのVolumeを0.5にしましょう。
子のパラメータを変更したので、SC_Bulletより上のパラメータには
変化がありません。Explosionの方は親のVolume100がまだ入っています。
子から更に子をつけることもできるので、上手く使ってください。
確認してみる
親のパラメータを変更すると、
子を設定しているSound Cueに全てパラメータが渡されているのが
分かると思います。
子のパラメータを変更しても他の子には影響はありません。
例えば、「SEのなっている間はBGMの音量を下げる」や、
「全てのSEの音量を上げたい」といった際に親のClassの
パラメータを変更するだけで処理を完了することが出来ます。
UE4 SoundClassを使ってみよう
今回はSound Classについて書いていきます。
各種パラメータについては省いていきます
(Radio Filterとか使ったことない)
Sound Classとは
Sound Classは多数のサウンドアセットに適応することのできる
プロパティの集合体です。
これらを上手く使うことでサウンドのパラメータ調整がかなり楽になります。
また、SoundClass同士で親子付けすることも可能であり、
かなり強力な機能です。すげー便利。
準備
今回のプロジェクトはUE4 4.18.2で作成しています。
SoundClassを作成する
コンテンツブラウザから右クリック
Sounds→Sound Classを選択します。
適当な名前を付けます。
SoundClassの中を見てみる
作成したSoundClassをダブルクリックで開くと、
このような画面が出てきます。
左側には各種パラメータ、右側にはSoundClassの親子関係が
ノードで表示されています。
Sound Classをアセットに適応する
まだパラメータも何も変更していませんが、
Sound Classをサウンドアセットに設定しましょう。
適当なwaveファイルからSound Cueを作成します。
作成したSound Cueを開き、Detailsタブの
Sound→Sound Classを設定します。
先ほど作成したSound Classに変更しておきましょう。
これでSound Cueの設定は終わりです。
Sound Classの親子付けをしてみる
Sound ClassのDetailsタブの下の方にChild Classesというものがあります。
右側の+をクリックし、子SoundClassを追加します。
SoundClassを作成していない場合や、
新規のSoundClassを追加したい場合は
Create New Asset欄のSound Classを選択して、
新しいSoundClassを作成しましょう。
子SoundClassを追加すると、右側のノードに子SoundClassが追加されます。
SoundClass_SE
|- SoundClass_Explosion
|- SoundClass_FootStep
| |- SoundClass_Grass
みたいな感じで親子付けするといいんじゃないでしょうか。
UE4 Grayちゃんのボイスデータの調整をしました
Grayちゃんは良い!!
先日、GrayちゃんボイスVol.1、Vol.2の.wavデータを編集させていただきました。
セリフ自体の変更などはありませんが、
UE4上で扱いやすくできるようにしました。
今回はどの辺をどのように変更したのかを、
細かく書いて行こうと思います。
あくまで趣味でやっていることなので、
私の勘違いなどがある可能性がありますがご了承ください。
使用ソフト
http://old.audacityteam.org/download/?lang=ja
機能も(それなりに)多くて使いやすいんですが、
バッチ処理がとても使いにくいです。
結局(88ファイル)全て手作業で編集しました。
有償の波形編集ソフトを購入しようかと悩んでます。
容量
結論から言うと結構軽くなりました。
GrayちゃんボイスVol.1から見ていきます。
Grayちゃんボイス Vol.1が公開中 - Grayちゃん OFFICIAL WEBSITE
52種の.wavファイルが収録されており、
元々のサイズは8.79MBでした。
編集後は4.85MBまで容量を下げられました。
次にGrayちゃんボイスVol.2です。
Grayちゃんボイス Vol.2が公開中 - Grayちゃん OFFICIAL WEBSITE
通常のボイス24種とシステムボイス11種の
計35種の.wavファイルが収録されています。
元々の容量は6.81MBで
編集後は4.21MBになりました。
ブランク
左のブランクは可能な限り切り詰めました。
これを
こんな感じに
こうすることでした際に、
ボイスが流れ始めるまでに時間がかかるという問題が解決できました。
右ブランクは音が止んでから0.3秒ほど、空白を残しています。
個人的な趣向と言ったらそれまでなんですが、
再生が終了してプツッと音が切れるのを防いだり、
.wavに直接リバーブなどの処理をかけるときに面倒なことにならないようにしてます。
クリックノイズの修正
音声を切り分ける際に入り込んだのだと思いますが、
クリックノイズがありましたので修正しました。
ノーマライズ
Grayちゃんボイスは全体的に音量が小さいです。
ゲインなどで上げても良かったのですが、
今回はノーマライズの処理で調節を行いました。
変更していない箇所
・セリフ
コレに関しては加工ではどうしようもないのでVol.3を期待しましょう。
・周波数、bit数
44100Hz、16bitで変更していません。
元のデータより密度を上げても音質は上がらない上に、
容量も大きくなるので今回は変更しませんでした。
・ファイル名
特に変更する必要が無かったので変更しませんでした。
・チャンネル数
全て1つ(モノラル)のファイルです。
UE4で使用する
再生に関しては(多分)問題ないと思います。
音量が少し大きくしたい、速度を遅くしたいなどはUE4側で
ある程度制御できるのでお試しあれ。
みんなでGrayちゃんを使おう。
UE4でWebページを作ってみたかった
Unreal Engine 4 (UE4) その2 Advent Calender 2017
参加9日目の記事です。
今回は私のやってみたかったことをやった結果になります。
タイトルの通りUE4でWebページが作れるのかを試してみました。
結果を先に言うと作れます(軽くはない)
8日の朝に明日は私の番であるということに気がついたので、
バタバタ作ってみました。
その手順を紹介したいと思います。
(時間がなかったんだ!!)
ではやっていきましょう。
準備
今回はUE4 4.18.1を使用しています。
今回のプロジェクトではHTMLビルドを行います。
UE4起動ボタンのドロップダウンを開き、
オプションを選択します。
対応プラットフォームにHTML5にチェックが入っていることを
確認してください。
ONにして適応ボタンを押してください。
プロジェクトを作成する
では本題に入っていきます。
まずは新規プロジェクトを作成しましょう。
今回はUMGをメインで使用するので、
Mobile/Tablet、Scalable 3D or 2D、 スターターコンテンツなしで
Blankプロジェクトを作成します。
Widgetを作成する
プロジェクトが作成できたら、Widgetを作成していきます。
コンテンツブラウザを右クリック、
User Interface→Widget Blueprintを選択します。
名前は適当にWidget_Baseとしました。
※Header、Footer部分になる箇所を分けて作成してもいいかもしれません。
かなり適当な作り方をしたので、
詳しくは書きませんが、
Webページの見た目となる部分を作成します。
Vertical Boxなどを使っていないため、
解像度を変更するとえげつないズレ方をするため、
これを実践する際にはレスポンシブ的な対応をする必要があるかと思います。
今回はボタンの反応などは入れてません。
新規マップを作成する
デフォルトのマップには色々オブジェクトが配置されているので、
新規マップを作成して、何もない空間を作成します。
左上のFile→New Levelを選択します。
Empty Levelを選択します。
マップを作成したら保存しておきましょう。
今回はMap_Indexという名前にしました。
レベルブループリントを編集する
Map_Indexのレベルブループリントを編集します。
上のBlueprintsタブからOpen Level Blueprintを選択します。
レベルブループリントでは、このようにWidgetを
生成/取り付けを行う処理を書きます。
これでMap_Indexを開くとWidget_Baseが取り付けられます。
HTMLファイルの書き出しを行う
処理が大体終わったので、HTMLビルドを行います。
左上のFileからPackage Project→HTML5を選択します。
書き出されました。
localhostで起動する
HTML5LaunchHelper.exeを起動すると、
ローカルのサーバーが立ち上がります。
ポートは8000のようです。
適当なブラウザを開き、localhost:8000のHTMLファイルにアクセスします。
開きました。
サーバーにアップして起動する
ローカルホストで確認できたので、今度はサーバーにアップして
確認してみましょう。
ファイルのアップにはFileZillaを使用しています。
サーバーに書き出されたHTML5ファイルごとアップロードします。
いらないファイルも混ざってるかもですが気にしない。
ブラウザからURLを入力してページを開くと、
localhostと同じように起動しました。
しっかりとボタンの反応などを組み込めば、
Webページとして活用できるかもしれません。
明日はcom04さんの「ぷちコン与太話-マテリアルゲーム作った話-」です。
個人的にものすごく楽しみにしてます!
UE4 ADX2 LEを使って足音を実装してみよう
前回ADX2 LEの導入記事を書きました。
前回↓
今回はADX2 LEのCri Atom Craft上で編集した
サウンドデータで足音を作成し、UE4で再生してみようと思います。
通常、足音などを再生する場合は複数の足音のデータを
Waveファイルとしてインポートし、
Sound Cueでランダムに再生するかと思います。
イメージ:
...まぁ面倒くさい。
データ容量も大きくなるし、
100種類の足音とかだったらノードも見づらくなります。
ベースの足音を用意する
今回は1種類の足音につき1つのWaveファイルで表現します。
とりあえず、何かしらの足音を1つ用意しましょう。
フリー素材でも大丈夫ですが、
私は玄関の床を革靴で叩いて収録した音を、
使いやすいように調整した音を用意しました。
Cri Atom Craftを起動する
用意したWaveファイルをCri Atom Craftで編集していきます。
Cri Atom Craftを起動してください。
起動したら、左上のファイルから
プロジェクトファイルを開くを選択し、
前回作成したプロジェクトを開きましょう。
開きました。
足音用のフォルダを作成する
今回はフォルダ分けなどを丁寧に行っていきます。
マテリアルルートフォルダを右クリックし、
新規オブジェクト→サブフォルダの作成をクリックしてください。
サブフォルダが出来ました。
このサブフォルダの名前をFootStepに変更します。
変更したFootStepフォルダに足音のWaveファイルを入れていきましょう。
インポートは後で行います。
ワークユニットのキューシートフォルダを右クリック
新規オブジェクト→サブキューシートフォルダの作成をクリックしてください。
作成したサブフォルダにFootStepと名前をつけます。
FootStepフォルダを右クリック
新規オブジェクト→キューシートの作成をクリックします。
今回は足音用のキューシートにする予定なので、
Cue Sheet_FootStepと名前を変更します。
Waveファイルをインポートする
マテリアルルートフォルダに作成したFootStepフォルダに
用意したWaveファイルをドラッグアンドドロップしましょう。
waveファイルがインポートができたと思います。
次に作業用のCueSheet_FootStepに
インポートしたWaveファイルをドラッグアンドドロップします。
CueSheet_FootStepにWaveファイルが追加されました。
音を編集する
ここから音の編集をしていきます。
読み込んだ音を選択してください。
そしてFX1タブを開きます。
今回はこのFX1タブの中で音を編集していきます。
このようにピッチやボリュームの大きさを調節したり、
上にドラッグすることで、ここからここまでという範囲を指定できます。
その範囲の中をランダムで再生します。
今回はピッチの値をランダムに返してほしいので、
画像のようにしてみました。
次に減衰設定を行います。
Atom Cueの方を選択してください。
3Dポジショニングタブを開きます。
減衰距離の最小/最大のパラメータを変更しましょう。
最小を50.0、最大を3000.0にしました。
ここはUE4で再生しながら確認するといいと思います。
キューシートをビルドする
編集はこのあたりにして、CueSheet_FootStepを
右クリックからAtomキューシートバイナリのビルドを選択します。
Cue_Sheet_FootStepにチェックが入っているのを確認して
ビルドボタンをクリックしましょう。
ビルドしたデータをUE4にインポートする
ビルドしたデータは指定した出力パスにあります。
.acbファイルをUE4にインポートしましょう。
インポートしました。
音を再生したいタイミングで
AnimationにNotifyを追加します。
そしてこのように処理を組み、
インポートした.acbファイルを再生します。
確認してみる
どうでしょうか?
1つの音声データからUE4上で編集することなく、
ランダムピッチな足音が再生されていると思います。