menu
バージョン
2021.1.14.8108
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
Wwise Unreal Integration Documentation
|
次の例でもゲームをスタートするときに何かを再生しますが、今度はブループリントから再生します。良いユースケースとしてMusicの再生があり、これは永遠に続く可能性があります。
WwiseでMusic Playlist Containerの中のMusic SegmentをPlay_Music Eventからコールすると、無期限にループします。
これからUnreal Editorで、ThirdPersonExampleMapレベルにサウンドを追加してみます。このレベルには、既にLightやMeshなど様々なActorが入っていて、あなたがコントロールできるキャラクターも1つあります。今はこのレベルでしか作業をしない上に、Actorたちがシーンの中に無期限に滞留するので、World OutlinerでActorを1つ選び、必要となるオーディオインテグレーションをそこに追加できます。
info | 注記: 複数のシーンがある場合は、別のマップをロードしても音楽が存続するように、 パーシスタントレベル を作成することを検討してください。 |
操作できるプレイアブルキャラクターが既に作成され、ThirdPersonCharacterに追加されているので、そのブループリントを使います。
World Outliner > ThirdPersonCharacter Actorに進み、 Edit ThirdPersonCharacter を選択します。
これでThirdPersonCharacterのブループリントが開き、ここからWwise Eventをコールできます。ほかにも既成のGamepad Input、Jump、Movement Inputなどのシステムに気付くかもしれません。これらで自分のキャラクターを制御できるのですが、今は使いません。そのままにしておき、空いた場所を見つけてください。Wwise Eventをプレイする(「ポストする」とも言う)ためには、あなたがプレイを開始したときにUnreal Eventをコールし (1) 、Wwise Eventを再生する関数にそれを接続し (2) 、どのActorで再生すべきかを指定する (3) 必要があります。
Event Graphの空いた場所で右クリックし、“BeginPlay”と入力し、該当するUnreal Eventを選択します。
BeginPlayの矢印からコネクタをドラッグして引き出し、“postevent”と入力し、 Post Event 関数を選択します。
実際に作動させるには、Post Event関数が、どこにWwise Eventを配置するのかが分かるように、Actorを参照する必要があります。
Actor Object Referenceからコネクタをドラッグして引き出し、“self”(自分自身)と入力し、 Get a reference to self を選択します。
システムに関しては、以上です。次にAkEventプロパティでWwise Eventを1つ選択すれば、あなたがゲームをプレイしたときに、それがポストされます。今回の例では、以下のようにPlay_Music Eventを1つ選択します。
Post Event 関数でWwise Eventを選択します。
このようにして、Wwiseへのコールを、ブループリントで制御できます。なお、これは非常に簡単な例です。実際に使うようなシナリオは、これよりかなり複雑になることが多いです。
ブループリント環境はActorの動作を制御するのには最適ですが、レベルにあるActorを管理したり配置したりするのには不便です。代わりに、Level Editorで可能な限りの操作ができるように、ブループリントの制御の一部をDetailsパネルで公開させます。これはActorにAkComponentを追加することで可能で、必要に応じてLevel Editorから直接、サウンドのポジションをオフセットできるようになります。
Add Component を選択し、'Ak'を検索し、 Ak を選択します。
Event Graphで、 Post Event 関数を、 Self への参照と共に削除します。
次に、ポストする対象のオブジェクトとしてAkComponentを参照先とすれば、これが、ポストしたサウンドのポジションとオリエンテーションとなります。
AkComponentをブループリントの中にドラッグし、Object Referenceで Post Ak Event を見つけます。
BeginPlay を Post Ak Event に接続します。
これで、AkComponentで選択したWwise Eventが取得できます。
AkEventのObject ReferenceでGet Ak Audio Eventを見つけ、それをAkComponentリファレンスに接続します。
コンパイルし、Detailsパネルで Ak を選択し、Eventを1つ選択します。
Eventを変更するのにブループリントにいく必要がなくなり、サウンドのポジションを、それが添付されているActorの位置からオフセットできます。
無音から、サウンドへと の演習でLevelにAkAmbientSoundを1つ追加し、それにアンビエンスを再生させました。ThirdPersonCharacterの隣に追加してうまくいったのですが、レベルの中を散策してみると、ボックスの後ろに回ったときに音が消えたことに気付いたかもしれません。何らかの問題になるかもしれないので、検証してみます。
自分のAkAmbientSound Actorを確認します。
ゲームをスタートするとサウンドがフルボリュームで再生されますが、次に、Actorを何かの物体の反対側に行かせてカメラ(つまりリスナー)から見えなくすると、サウンドがフェードアウトします。これは、Occlusionがデフォルトで有効になっているからです。アンビエンスやミュージックのようなサウンドには、望ましくない効果かもしれません。無効にするには、Occlusion Refresh Intervalを「0」に設定します。
Detailsビューで、 AkComponent > Occlusion > Occlusion Refresh Interval を「0」に設定します。
別の方法として、Post Event関数を使ってWwise Eventをポストしていれば、このプロパティをSetOcclusionRefreshInterval関数を使ってWwise Eventをポストする前に設定できます。
多くの場合、ゲームにインタラクティブミュージックを取り入れてゲームプレイの条件に適応させたり、バリエーションを増やしたりしたいものです。次の例では、Stateを使ってミュージックを制御するという、一般的なアプローチを説明します。 始める前に、まずWwiseでミュージックシステムを新しく作成します。下図のとおり、Music Switch Containerを作成し、“Music”というStateに従って、Music Playlistが"Repeat Calm"と"Repeat Intense"で切り替わるように設定します。
Calm、Intense、Noneの3つのStateがあるのが分かります。この設定では、ゲームからStateを設定することでランタイムにミュージックを変更できますが、その前に、ゲームをスタートしたときに設定されているStateを選んでおきたいものです。そこで、 AkComponentを使う で実践した手順を続け、Occlusion Refresh Intervalを、 オクルージョンを無視させる の例でしたように「0」に設定します。
最初のStateの様子を制御できるように、まずミュージックをポストする前のStateを設定します。
BeginPlay からSetState関数をドラッグして引き出します。
Initial Stateを Music-Calm に設定します。
初期のステートの設定が完了しました。
ランタイムのステートの変化について、ミュージックのステート制御として一般的なのは、プレイヤーがTriggerで定義した特定エリアに入ったときにStateを設定するという方法です。そこで、まずBox Triggerを作成し (1-2) 、トリガーの範囲に入ったときのStateを設定するブループリントシステムが伴うようにします (3-4) 。次に、DetailsビューでStateを公開して (5-6) 、あとからブループリントに戻る必要がないようにします。
Box Triggerを、Levelにドラッグします。
Box Triggerのサイズを大きくします。
Blueprint/Add Script を選択し (1) 、適切な名前を付け (2) 、 Create Blueprint を選択します (3) 。
次にブループリントのシステムを設計します。新しいブループリントを作成すると、自動的にActorBeginOverlap Eventができますが、これは何かがBox Triggerに進入したことを検知するのに役立ちます。では、このEventを使いプレイヤーActorかどうかを判断し、そうであれば、Stateが設定されるようにします。
ActorBeginOverlap から、 ThirdPersonCharacter に対してキャストし、ExecをSet State関数に接続します。
ここでSet State関数でStateを選択してもいいのですが、そうすると別のStateにこのBox Triggerを再利用できなくなり、今後、変更するときにまたブループリントに戻らなければなりません。これを避けるには、ブループリント外でもアクセスできるVariableを作成します。
State Valueからドラッグして引き出し、 Promote to variable を選択します。
左側の My Blueprint > Variables の下に変数ができますが、まだブループリント外で見ることができません。
変数の名前を“MusicState”に変え、公開するために目のアイコンを選択します。
Triggerを選択した状態で、 Details > Default > Music State でStateを1つ選択します。
ThirdPersonCharacterを使って新しいTriggerに歩いて入り、ミュージックが変わるのを待ちます。
このトリガーをコピーすれば、最初のトリガーに影響することなく、別の場所で再利用して違うステートを設定できます。
info | 注記: あなたのMusic Switch ContainerのTransitionが、 Exit Cue に設定されている場合は、ミュージックが切り替わるまで少し待つ必要があるかもしれません。 |