投稿記事

わんころのUE5勉強会 2023/09/29 12:00

自作ゲームの進捗20:チュートリアル周りを少しアップデート

皆様、こんばんは!


UI 周りに手を付け始めて少し経ちましたが、概ねやりたいことは実装が進んでおります。

操作説明を1枚の画面で表示して切り替えるような仕組みは以前実装してましたが、チュートリアルを一気に表示するより特定のタイミングで表示した方がいいかなということで修正とアップデートを行いました。


脱出ゲームの特性上ユーザが調べる場所がバラバラになることを想定し、解放してないチュートリアルはまだ見れないようにしておく機能も実装。

左右の矢印でまだ先があることを示しているのですが、最後のページの見通しがないためページ全体の枚数も表示した方がいいかもしれませんね。

一応お見せ出来ない部分も進めており、順調には進んでいます。


一点どうしても分からない問題に遭遇し、再現性も微妙で出来る時は出来てるという症状だったので結構悩んでましたがようやく原因が分かりました。


Level Sequencer で Cine Camera Actor を使ってカットシーンを再生し、「Set View Target with Blend」を使ってカットシーン後の最終位置にカメラを切り替えるという実装をしました。

ある時は想定通り切り替わり、ある時はカットシーン再生前の位置にカメラが戻り、再現性も微妙な状況でした。


カメラを最終位置で固定するか、戻すかについては「カメラカット」で右クリック>「セクションの編集」>「When Finished」を[Keep State]に変更することで対応できます。

デフォルトでは[Project Default]になっており、(恐らく)[Restore State]の挙動になってるんじゃないかと思います。


これの原因ですが、[Keep State]にしていたはずなのに[Project Default]に戻っている時があったことが判明しました。


挙動がおかしい時にすぐ見れば気が付いてただろうと思うんですが、問題ない挙動を示す時もあったため全然気づけませんでした。

Level Sequencer はまだまだ全然使えてないのでこういう挙動が発生するとデバッグ方法もよく分からないため焦りますね。
これでまた一つバグが潰せました。良かった...


それではまた!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/09/07 06:33

【UE5.3】Enhanced Input:IMC と Input Action の変更点

UE5.2 を全然触ってないまま UE5.3 がリリースされました。

そこで、Enhanced Input の Input Mapping Context と、入力アクション(Input Action)で UE5.1 から UE5.3 で変更された部分を自分で確認出来た範囲でまとめてみようと思います。

※ UE5.2 で既に変更された部分も含まれています
※ 未検証部分が含まれます
※ 気づいた点などあれば加筆・修正も予定しています



入力アクション

コンテンツブラウザで右クリック> 入力> 入力アクションで作成出来るアセットです。


変更された部分は画像で囲った部分です。

Accumulation Behavior

IMC に設定した IA_○○ に複数のキーが設定されていて、2つ以上の入力が同時に発生した場合の入力値をどうするか選択できます。

例えば IA_Move には WASD などキャラ移動に対して何個かキーが割り当たっています。

WとSキーを同時に押すと、入力値としては -1.0と1.0 が発生するので値が相殺(±0)されてその場から動かなくなりそうですが、W/S なら前方向、A/Dなら右方向へ移動します。


Unreal Engine Issues にも報告があり、仕様ではなく不具合だったようで修正されたみたいです。
Feature Request: Make WASD movement cancel out movement when you press keys in opposite directions


そして、以前の入力と今回修正されたオプションがこのプルダウンメニューから選択できるようになっています。

[Take Highest Absolute Value]
入力値の大きい値で処理されます。デフォルトではこちらが選択されており従来通りの挙動です。

[Comulative]
先程挙げた修正にて新しく追加された処理方式で、複数の入力値の合計値で処理されます。

例えば IA_Move をこのオプションに設定すると、-1.0 と 1.0 の合計値で 0.0 になり、キャラはその場から動きません。


Consume Lower Priority Enhanced Input Mappings

長い名前になりましたが、Consume Input の設定です。
以前の記事で記載しておりますのでこちらでは割愛します。

【UE5】Enhanced Input:Priority や Consume Input の検証


Consumes Action and Axis Mappings

Enhanced Input + 従来の入力イベントを併用する場合の処理方法を決定できます。

このオプションにチェックを入れるとすぐ下の "Trigger Events That Consume Legacy Keys" が設定できるようになります。


プルダウンメニューの中から、Enhanced Input のどのイベントと連動させるかを決められます。


各種入力イベントを置いて Enter キーでトリガーされるように実装して確認しました。

"Consumes Action and Axis Mappings" にチェックを入れると、Enhanced Input の入力イベントのみ実行されたことが確認できます。

従来の入力イベントと併用する場合で、Enhanced Input の処理を優先したい場合はこのオプションを利用すると良さそうです。


Legacy Input mappings and Gameplay Debug Mappings cannot "consume" Enhanced Input actions
余談ですが、Unreal Engine Issues に報告されているこちら内容は UE5.4 で修正予定のようです。
(Enhanced Input の IA_○○ の入力と、Debug Key○○ で同じキーを利用している場合両方トリガーされるという問題です)



現在 Enhanced Input の Debug版の入力イベントには Consume Input の設定がないため、画像のようなケースでも両方トリガーされます。

UE5.4 で Debug版の入力に対しても Consume Input の設定が出来ると嬉しいです。


Player Mappable Key Settings(未検証)

従来だと Input Mapping Context 内で設定していた "Player Mappable Options" が入力アクション内でも設定出来るようになりました。

IMC 側もそうですが、設定の仕方が以前と変わりました。

"Player Mappable Key Settings" を [None] から [Player Mappable Key Setteings(Experimental)] に変更すると、画像のような設定画面が展開されます。

キーコンフィグ等で利用するために設定する名前や、ゲーム内で表示する名前・カテゴリを設定できるのは以前と変わらずです。

"サポートキープロファイル" が新しく追加されていました。


[空のマップ]と書いた部分をクリックするとゲームプレイタグを設定できる画面が表示されます。

どういう使い方をするのか未検証のため分かり次第追記予定です。


Input Mapping Context

Setting Behavior

入力アクション内でも出てきた "Player Mappable Key Settings" の設定を IMC 内でどうするか選択することができます。

Inherit Settings from Action

入力アクションで設定した情報をそのまま利用します。
デフォルトでこの設定になっています。

Override Settings(未検証)


IMC 内で独自に設定できます。
同じくサポートキープロファイルについては未検証です。

Ignore Settings from Action

入力アクションで設定した情報を使用しません。


入力イベント系は頻繁に使うので Enhanced Input 系の機能は少しでも覚えていきたいです。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/09/05 21:19

自作ゲームの進捗19:簡単な操作説明と暫定のオプション画面

皆様、こんばんは!

先日から手を入れている UI も躓きながらとりあえずは前に進んでおります。

知らない仕様も沢山知れて勉強にはなってますが、新しいことを覚えていくとそれなりに考えないといけなかったりして疲れてくるので、少し違う作業にしようと思いチュートリアルで表示する画面のベースを作成しました。

最初枠だけ作って相変わらず UI の統一感がないな...と思ってましたが、操作説明等を入れるとマシに見えたのでとりあえずこれで行こうと思います。

内容の切り替えに Widget Switcher を採用してみました。
Active Widget Index で切り替えたいインデックスに指定すれば選択的に Widget を表示出来るので便利ですね。

あとはこれを適切なタイミングで入れるだけなのでそんなに困らないと思います。



また、オプション画面の構成もある程度固まってきました。

ON/OFF を切り替える Toggle Widget、スライダーもしくは数値の入力(キーボードのみ)と連動するマウス感度、音量調整などの Slider Widget を実装しました。(このゲーム BGM 使うんだろうか...)

Sound Class/Sound Mix にてサウンド調整機能も実装しました。
各オプションもセーブ&ロードに対応出来たのでオプション画面はかなり進んだと思います。


一応パッド操作も考慮してはいるんですが、このゲームを無料公開する場所は Steam 以外になると思うので、XInput 系のコントローラーなら UE5 側で対応できますが Direct Input 系のコントローラをどう対応するかが悩みどころです。


特に名言はしてなかったんですが一応年内には...と思ってましたが、このペースだと年内に公開は難しいかもですね。

それではまた!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/08/24 23:25

【UE5】PIE起動時にゲームのウインドウサイズが大きくなっていく

皆様、こんばんは!

多分 X(旧Twitter)で見た記憶はあったのですが見つけられなかったので備忘録。


Play In Editor(PIE)で実行すると別ウインドウでゲーム画面を確認することできます。しかし、UE5 にて PIE> 閉じる> PIE> 閉じる...と繰り返すだけでウインドウサイズが大きくなっていくという症状があります。

画面の比率が意図せず変わってしまうので、場合によっては面倒な症状になります。


Unreal Engine Issues にも上がっており、UE5.4 で修正予定のようですがまだ当分先になりそうですね...
URL:New Viewport Resolution setting increases every time a new PIE window is launched




Unreal Engine Issues の通りなのですが、
「エディタの環境設定」> レベルエディタの中にある「プレイ」をクリックし、"Game Viewport Settings" にある "常に最初のビューポートウインドウを画面の中央に配置" のチェックが外れているとこの症状が発生します。

PIE 時に必ず画面中央に配置された状態になるので使いにくいかもしれませんが、チェックを入れておくとでこの症状を回避できます。

C++ を使うと修正出来そうですが、詳しくないためよく分かりません...

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

わんころのUE5勉強会 2023/08/21 20:14

【UE5】Add to Viewport の ZOrder にハマったというお話

皆様、こんばんは!

先日から UI(Widget)周りを触っているのですが、タイトル通り「Add to Viewport」の ZOrder でハマってた時のお話になります。


「Add to Viewport」は、「Create Widget(ウィジェットを作成)」で指定した Widget を画面上に表示する時に利用する関数です。


今回ハマった問題ですが、表示した Widget のボタンが昨日まで反応してたのに何かを実装してから反応しなくなったというものでした。
しかも別 Widget で作成したインベントリの方も同じ症状が発生しました。
(ButtonWidget の On Hovered や On Clicked が効かない症状です)





その「Add to Viewport」ですが、関数の下にある▽をクリックして展開すると、ZOrder という引数が表示されます。

ZOrder は描画順(優先順位)で、数値が大きい程手前に描画されます。
デフォルトで ZOrder は 0 に指定されており、特に意識しなければ後から「Add to Viewport」したものが手前に描画されていきます。


例えば WidgetA を作成し、画面の真ん中にボタンを配置しただけの Widget を作成します。

更に WidgetB を作成し、Border を画面全体に入れておきます。

「CreateWidget」で WidgetA、WidgetB を作成しておき、WidgetA→ WidgetB の順で「Add to Viewport」をすると WidgetA のボタンは反応しません。

後で「Add to Viewport」した WidgetB(画面全体の Border) が手前に来ているため、後ろのボタンが触れないようになっているということになります。

そのため、WidgetA を後で「Add to Viewport」するか、WidgetA の ZOrder を WidgetB より高くしておけばこの問題は解決です。


なんだそれだけ...なことなんですが、実はもう一個気づけなかった理由があります。

私のプロジェクトで一部の Widget のみ「Add to Viewport」した後、「Set Visibility」を使って Visible/Collapsed で表示を切り替えていたものがあったんですが、Collapsed になっている Widget が悪さをしているということが分かりました。
(この Widget が画面大半を占める Border を配置しているものでした)


Collapsed で非表示にしていたので、それが邪魔をしているのに暫く気づけませんでした。「Remove from Parent」をしなければ画面上に表示されていなくても ZOrder の影響を受けるということを知れて大変勉強になりました。


この問題に遭遇し、今まで他の Widget に干渉するような画面配置をしたことがなかったんだと思いました。
たまたま被らないような配置になってたということになりますね...

それではまた!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

1 2 3 4 5 6 7

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索