投稿記事

UE5の記事 (52)

わんころの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 に干渉するような画面配置をしたことがなかったんだと思いました。
たまたま被らないような配置になってたということになりますね...

それではまた!

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

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

わんころのUE5勉強会 2023/08/17 21:44

自作ゲームの進捗18:時計のモデル作成とバグの修正などなど

皆様、こんばんは!

前回の更新からしばらく空いていましたが、少しずつ裏では進んでおります。規模を大幅縮小したためゲーム本編だけなら6-7割くらいは完成したんじゃないかと思います。

謎解き部分の連動や、それに伴うイベント周り、特に UI 周りが整えばいよいよ大詰めになってきそうです。

無料公開を予定しているのでさっさと作って公開したいという気持ちもあるのですが、最近手を入れ始めた UI 周りの仕様が特殊なのか馴染めない所があり苦戦しております。


そして何か進捗を出そうと思ってたんですが、脱出ゲームを作ってる手前、こんなの出てきます!を作成するたびに出してるとネタバレしてる感も出てしまい、ちょっと出しづらいな...と思いました。
折角なんで出すんですけどね...



以前の進捗で、時計の仕掛けをと思い Megascans から持ってきたモデルと針っぽい何かをモデリングモードで作成し、これを時計だと言い張ってたんですが、時計のモデルはやっぱり欲しいと思い Blender で作成してきました。



左が Blender で作成した素のモデルで、右側が UE5 に持ってきてマテリアルだけ変更したものです。
結構見た目の印象も変わり、これなら胸を張って時計と言えます!

Blender でモディファイアの配列を使ってオブジェクトを均等に円形配置出来るようになりました。



針の回転部分などは以前作ってたのでモデルを差し替えるだけでした。また、画面中央に点を置いてインタラクト可能な物に近づくと目玉のアイコンに変わるようにしました。

Collision に入ったらどこを向いていても目玉が出て不自然なので、対象のオブジェクトとの内積を取ってキャラの向きがある程度オブジェクトへ向いてる時に処理するように変更するか、Collison 内で Tick を有効にして LineTrace などでヒットした時に出すとかしようとは思ってます。


次はオプション画面あたりの実装を整えようと思ってます。
WidgetBP と少しくらいは仲良くなりたい...

それではまた!

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

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

1 2 3 4 5 6 7

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索