ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

音付けとイベントディスパッチャー

今までエディターのビューポートでプレイしてきたが、新規ウィンドウでプレイするスタンドアローンゲームでプレイしてみたところ、だいぶ見た目が違っていた。
影の設定も動的シャドウを無効にする設定が正しく動いて、影が消えたりすることも無かった。
ビューポートはあくまで簡易的な描画だったりするのかな。
次に音関連の設定。SEとBGMの追加を行った。
ステージが始まったときに Create Sound 2D でBGMを作成して再生。
プレイヤーが死んだときにBGMを止めるのをイベントディスパッチャーを使って実装してみた。
プレイヤーにイベントディスパッチャーを追加して、ステージ側で開始時にそのディスパッチャーをBGMを止めるイベントにバインドする。
これでプレイヤー側からステージ側のBGMを止めるイベントを呼び出せる。
一応、やりたいことは出来たけど、この方法が良いかは分からない。

プレイしていたら何かチカチカするなと思ったら、影の表示が距離によって出たり消えたりしていた。
影の描画距離を変更すれば対処出来るかと思い、「Dynamic Shadow Distance Movable Light」の設定を変えてみた。
0にすれば動的シャドウを無効にするとあったので、常に表示されるかと思ったらやっぱり距離によって変わってしまう。
今回の目的は見た目を良くするものではないので、結局影を描画しないことにした。
ライト関連はいろいろな設定があって、未だによく分かっていない。

アセットを並べる

同じアセットをステージ上に並べようとして、数が多いとコピペが面倒だと思ったので、並べる機能は無いかと調べてみたら、マーケットプレイスにそういった機能を追加するプラグインがあった。
www.unrealengine.com
以前、月の無料マーケットプレイスコンテンツとして提供されていたので手に入っていた。購入手続きをやっておいてよかった。
他にもコンストラクションスクリプトを使って実現する方法もあるようだ。
historia.co.jp
とりあえず、今回はプラグインのほうを使った。

アセットの移行

ゲームプレイ部分を実装中。
まずアンリアルクエスト4で使われていたブループリントのJumpPadを自分のプロジェクトに持ってきた。
アセットを別のプロジェクトに移行するには、アセットを右クリックして移行を選び、コピー先を選ぶ。
historia.co.jp
フォルダ構成もそのままコピーされる。
自分のフォルダに移動してみたら正しく動作しなくなってしまった。中で参照している場所とか情報が入っているようだ。
結局、一度強制削除して、もう一度移行しなおした。

タイトル画面

UE5でタイトル画面を作成中。
まず、ウィジェットブループリントでテキストを複数追加出来なくて戸惑う。さきにキャンバスパネルを追加しないと駄目だった。そこに複数のテキストを追加していった。
レベルブループリントでウィジェットを作成し、Add to Viewportで画面に表示する。ここでもウィジェットを作成するノードが見つからなくて焦る。検索窓に create と入れて見つからないと思っていたら、日本語で「ウィジェットを作成」とあった。英語で探していたので気がつくまでちょっと時間がかかった。
何かキーが押されたらゲームプレイレベルに行くようにするため、Any Key イベントで押されたら、Open Level でゲームプレイレベルへと切り替える。
実際に出来たのだが、タイトル画面を実行中に見えないプレイヤーが生成されているようで落下しているのがエディター上でわかる。このプレイヤーを出さないようにするのはどうしたら良いのだろう。
とりあえず、後回しにしてゲームプレイのほうに進むことにする。

今週の予定

アンリアルクエスト4の模範解答を見ているときにキャラクターをジャンプさせるジャンプパッドで、以前、Smile Basicのプチコンでみたジャンプゲーを思い出したので、そのミニゲームを作ることにした。
素材はありもので。タイトル画面、ゲームオーバー画面もあり。
例によってクオリティは気にしない。形にして完成させることが目的。

アンリアルクエスト4上級編の模範解答を読む その4

アンリアルクエスト4上級編の模範解答のボムの処理と集中線の部分を読んでいる。
ボム自体に関してはアニメーションで拡大し、触れたものにダメージを与えている。だいぶブループリントを読むのにも慣れてきて、わかるようになってきた。
集中線はポストプロセスマテリアルを使って表現している。
カメラのRendering Featuresのポストプロセスマテリアルの配列に設定すると画面全体のエフェクトとして描画されるようだ。
スライディングをしたときにマテリアルを追加して、スライディングが終わったらパラメータで表示しないようにしている。追加したマテリアル自体を取り除くということはしていないようだ。
複数のポストプロセスを設定するときは配列に追加していけば良いのかな。でも処理がバラバラだとまとめて設定するのを書くのは面倒そう。
日本語の設定にしているけど、カメラのポストプロセス内の項目はLensとかFilmは英語のままなのに「ポストプロセスマテリアル」だけ日本語になっている。
historia.co.jp
ヒストリアのブログに実装方法の記事があった。マテリアルの作り方はこちらが参考になる。