fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2022年10月 | ARCHIVE-SELECT | 2022年12月

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5 「Enhanced Input」で入力の値を反転する(Negate、Modifiers、Input Action、Input Mapping Context)

「Enhanced Input」で入力の値を反転する方法です。

こちらを参考にさせていただきました。

・UE4.26 Enhanced Inputについて
https://unrealengine.hatenablog.com/entry/2020/11/28/192500

公式ドキュメントはこちら。

・Enhanced Input プラグイン
https://docs.unrealengine.com/4.26/ja/InteractiveExperiences/Input/EnhancedInput/

「Enhanced Input」で入力の値を反転するには「Modifiers」で「Negate」を設定します。
「Modifiers」については「Input Action」と「Input Mapping Context」アセットの両方で設定できるので
用途に合わせて使い分けるで良いのではないかなと思います。

入力の値を反転させたい場合はどんな状況かというと、自分はこんな時に使いました。
入力の値を反転する001
例えばこんな感じでカメラ操作に「ゲームパットのスティック入力」と「マウス操作」の両方を対応させたい場合、
このままの設定だと、「ゲームパットのスティック入力」に合わせると
「マウス操作」の上下が移動でカメラの動きが想定と反対の動
きになってしまいました。

上記のことから「マウス操作」の「上下の値」だけを反転すれば問題なく動きそうなので
「Modifiers」の「Negate」を設定
してみます。

というわけで設定したのがこちら。
入力の値を反転する000
マウスの上下だけを反転させたいので
「Modifiers」で「Negate」を設定した後、「Y」のみを反転させる設定を行いました。
一応これだけで上手く動きました。

今回は上記のような二つのアサインに対しての処理だったので「Input Mapping Context」アセットで設定しましたが、
入力自体が独立しているのであれば「Input Action」アセットで設定してもいいのかなと思います。

「Enhanced Input」はこういった細かい設定がアセットで設定できるのが嬉しいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5 「Enhanced Input」で入力の値に遊び(Dead Zone)を設定して値をクランプする(Dead Zone、Modifiers、Input Action、Input Mapping Context)

「Enhanced Input」で入力の値に遊び(Dead Zone)を設定して値をクランプする方法です。

こちらを参考にさせていただきました。

・UE4.26 Enhanced Inputについて
https://unrealengine.hatenablog.com/entry/2020/11/28/192500

公式ドキュメントはこちら。

・Enhanced Input プラグイン
https://docs.unrealengine.com/4.26/ja/InteractiveExperiences/Input/EnhancedInput/

「Enhanced Input」で入力の値に遊び(Dead Zone)を設定して値をクランプするには
「Modifiers」で「Dead Zone」を設定
します。
「Modifiers」については「Input Action」と「Input Mapping Context」アセットの両方で設定できるので
用途に合わせて使い分けるで良いのではないかなと思います。

例えばアナログスティックの入力を取りたい場合があるとします。
アナログスティックの入力をクランプする001
こんな感じですね。

ただ、このまま入力を受け取ると、スティックがニュートラル状態にいるという想定でも
少し傾いていたりなど、微細な値がはいることが結構あります。

こういった場合に遊び(Dead Zone)を設定することで回避することができます。
実際に設定してみるとこんな感じになります。
アナログスティックの入力をクランプする000
「Modifiers」を追加して「Dead Zone」を設定してみました。
「Lower Threshold」以下であれば「Lower Threshold」の値にクランプされ、
「Upper Threshold」以上であれば「Upper Threshold」の値にクランプされます。

上記のように設定することで、ニュートラル状態で多少値が入っていたとしても
クランプされることによって微細な値での挙動をしなくなります。

「Enhanced Input」はこういった細かい設定がアセットで設定できるのが嬉しいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 2022/11 の無料マーケットプレイスコンテンツと永続コンテンツ(Low Poly Style Deluxe 2:Tropical Environment | WolfDigitalLLC)

2022/11 の無料マーケットプレイスコンテンツと永続コンテンツのメモです。

公式情報はこちら。

・2022年11月の無料マーケットプレイスコンテンツ
https://www.unrealengine.com/ja/blog/featured-free-marketplace-content-november-2022

無料コンテンツについては期日がすぎると無料でなくなるので公式情報や他のサイトさんを見たほうが良いかと思います。
こちらでは永続コンテンツについてのメモを残しておきます。

・Low Poly Style Deluxe 2:Tropical Environment | WolfDigitalLLC
https://www.unrealengine.com/marketplace/ja/product/low-poly-style-deluxe-2-tropical-environment

この豪華なローポリゴン スタイルの環境パックで、スタイライズされたファンタジー世界を作りましょう。
火山も作れます。宝物を積んだ海賊船も含まれています。

Pushing low poly style to a new standard, Low Poly Style Deluxe 2: Tropical Environment includes everything you need to create breathtaking stylized tropical environments. Check out the 3 deck, 30 gun pirate ship, that even includes a kitchen, and captains quarters! Low Poly Style Deluxe 2 includes materials to simulate stylized ocean waves and waterfalls. Load the the Flora category of meshes into the foliage tool, and make lush environments with ease. There are also mountain, and rock meshes that make it easy to do a large tropical mountain-scape, as well as meshes perfect for making lava caves! So whether you are making a game, or just a hobbyist, Low Poly Style Deluxe 2 has everything you need to get started making incredible low poly style tropical environments!
(ローポリスタイルを新しいスタンダードに押し上げた「ローポリスタイルデラックス2:トロピカル環境」には、息を呑むほどスタイリッシュなトロピカル環境を作成するために必要なものがすべて含まれています。3階建て、30丁拳銃搭載の海賊船には、キッチンや船長室も含まれています。ローポリスタイルデラックス2には、スタイル化された海の波や滝をシミュレートするためのマテリアルが含まれています。フローラカテゴリのメッシュをフォリッジツールにロードすれば、簡単に緑豊かな環境を作ることができます。また、山や岩のメッシュもあるので、南国の大きな山の風景を簡単に作ることができますし、溶岩洞窟の作成にも最適です! ローポリスタイルデラックス2には、ゲーム制作に携わる方にも、趣味の方にも、素晴らしいローポリスタイルの南国環境を作り始めるために必要なものがすべて揃っています。)

とあります。

Features:
·121 Static Meshes across 11 Categories: Beach, Flora, Caves, Misc, Mountain, Pirate, Platform, Tiki, Treasure, Volcano, and Water.
·1 Landscape Material, 3 Master Materials, 127 Instances, 21 Standalone Materials
·7 Textures
·Wind and Water Materials Included
Texture Sizes:
· 2048x2048
Collision: Yes, automatically generated, and per-poly. Set certain large meshes to "Complex Collision as Simple" in the Static Mesh screen for best experience.
Triangle Count: Beach 116-2321, Flora 10-5257, Misc 2-3840, Mountain 108-7890, Pirate 104-123892, Platform 252-
1980, Tiki 301-2030, Treasure 44-8088, Volcano 604-12697, and Water 1101-131072.
LODs: No/Auto generation left up to user.
Number of Meshes: 121 Total
Includes 1 demo map as seen in the trailer and screenshots, and 1 overview map for size comparison.
Materials are clearly notated in the blueprint editor.
Easy Installation: Low Poly Style Deluxe 2: Tropical Environment installs directly to your project through the launcher.


| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 C++でコンソールにログを出力する(UE_LOG、Fatal、Error、Warning、Display、Log、Verbose、VeryVorbose)

C++でコンソールにログを出力する方法です。
結構使う割には忘れやすいのでメモです。

こちらを参考にさせていただきました。

・[UE4] UE_LOGについてあれこれ
https://historia.co.jp/archives/5532/

ログの出力には「UE_LOG」マクロを使います。

こんな感じで定義されているようです。

#define UE_LOG(CategoryName, Verbosity, Format, ...)


「CategoryName」についてはこちらの説明があります。

CategoryName
その名のとおり、カテゴリ名です。
UE_LOGで出力されるログは、多くのカテゴリに分かれています。
エンジン側で用意されているものの他、自分でカテゴリを定義することも出来ます。(後述)

基本的には「LogTemp」を使うので大丈夫だと思います。

「Verbosity」についてはこちらの説明があります。

Google翻訳で直訳すると「冗長」という意味だそうです。
これは、ログの詳細度のようなものです。
通常使用するのは、下記の7段階になっており、後のものほど詳細なログという扱いになります。

Fatal … 致命的なエラー。こちらはassertと同様の扱いになります。プログラムにブレークがかかります。
Error … エラー。名前のとおりです。OutputLogウィンドウには赤色で表示されます。
Warning … 警告。これも名前のとおりです。OutputLogウィンドウには黄色で表示されます。
Display / Log / Verbose / VeryVorbose … ログ。後のものほど詳細なログとして扱います。

上記については表示を絞る時にも使われたり、内容の分類にも使えるのできっちり使ったほうが良さそうです。

historia さんのサイトに書かれている

普段、通常のプレイの邪魔にならない程度の情報は「Log」で、詳細な調査を行いたいとき用のログは「Verbose」、かなり本気のデバッグ時に細かく追跡するときは「VeryVerbose」といった使い方がよいのではないでしょうか。

といった使い方が良いと思われます。

実際の使い方としてはこんな感じですね。

UE_LOG(LogTemp, Log, TEXT("LogMessage"));


マクロの3つ目の引数が「Format」となっているため、「printf」のような使い方もできます。

UE_LOG(LogTemp, Log, TEXT("Value = %d"), 123456);


かなり使い勝手のいいログ出力機能なのでなるべくわかりやすいように使っていきたいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 実行ピンなしのキャスト(Cast)を処理する「ピュアキャスト(Pure Cast)」(Convert to pure cast)

実行ピンなしのキャスト(Cast)を処理する「ピュアキャスト(Pure Cast)」についてです。

こちらを参考にさせていただきました。

・ブループリントマニアックス
https://www.slideshare.net/masahikonakamura50/ss-66638195/32

通常のキャストはこんな感じになると思います。
ピュアキャスト000
実行ピンありの状態ですね。

この「キャスト(Cast)」ノードを右クリックして「純粋キャストに変更(Convert to pure cast)」を実行します。
ピュアキャスト001

そうすると、実行ピンのないキャストノードに変換されました。
ピュアキャスト002

こちらも結構スッキリしたりするので一度のみキャストするものなどはこちらの方が良いかもですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 変数の「Get」時に「IsValid」を同時に行う「検証済みゲット」(Convert to Validated Get)

変数の「Get」時に「IsValid」を同時に行う「検証済みゲット」についてです。

こちらを参考にさせていただきました。

・ブループリントマニアックス
https://www.slideshare.net/masahikonakamura50/ss-66638195/14

変数の「Get」は通常こんな感じになります。
検証済みGet000

この変数が有効かどうかを調べるためには「IsValid」ノードを使います。
検証済みGet003

この「Get」と「IsValid」を同時に行う「検証済みGet(Convert to Validated Get)」というのがあるようです。
変数の「Get」ノードを右クリックしてでるメニューの「検証済みゲットに変換(Convert to Validated Get)」を実行します。
検証済みGet001

するとこんな感じで「Is Valid」を含んだ「Get」に変換されます。
検証済みGet002

ノードもスッキリしてすごい便利ですね!

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5 外部からアニメーションブループリント(Animation Blueprints)のステートマシン(State Machines)のステート(State)遷移時の条件を設定する(Request Transition Event、Query and Mark Transition Event、Transition Rules)

外部からアニメーションブループリント(Animation Blueprints)のステートマシン(Request Transition Event、Query and Mark Transition Event、State Machines)のステート(State)遷移時の条件を設定する方法です。

※UE5.1 からの機能なので注意して下さい。

こちらのツイートがあったので試してみました。
おそらくそのうちスライドなどが公開されると思いますので詳細はそちらに期待ということで!

公式ドキュメントはこちら。

・アニメーションブループリント(Animation Blueprints)
https://docs.unrealengine.com/5.0/ja/animation-blueprints-in-unreal-engine/

・ステートマシン(State Machines)
https://docs.unrealengine.com/5.0/ja/state-machines-in-unreal-engine/

外部からアニメーションブループリントのステートの遷移条件を設定するには
「Request Transition Event」ノードと「Query and Mark Transition Event」ノードを使うようです。

まずは外部から「Request Transition Event」ノードを使って遷移条件を設定します。
外部から遷移ルール操作001
「Target」には「Anim Instance」を設定します。
「Event Name」にはステートの遷移ルールで参照したい名前を設定します。
「Request Timeout」は…リクエストが受理される時間でしょうか(要確認)
「Queue Mode」と「Overwrite Mode」についてはちょっとわからないので調べてみようと思います。

とりあえず「Event Name」と「Request Timeout」を設定するだけでも動いたので試してみました。
こんな感じにノードを作ってみました。
外部から遷移ルール操作000
上記はレベルBPで作成したもので、キャラクターのスケルタルメッシュが持つ「AnimBP」を使って
「Request Transition Event」」ノードを実行
しています。

元となる「AnimBP」にはジャンプをさせるための「JumpStart」というステートがあるのでその名前に合わせています。

次に、この名前を使ってステートを遷移するための条件を設定します。
条件を設定するにはステートの遷移ルールで「Query and Mark Transition Event」ノードを参照します。
外部から遷移ルール操作003
「Event Name」には遷移条件として使いたい名前を設定します。
前述の「Request Transition Event」を使った名前が一致すると「Return Value」が「true」になるようです。

というわけで外部からの処理でジャンプするように条件を設定してみました。
外部から遷移ルール操作002
元からある変数を使った条件に「Request Transition Event」を追加してみました。

実行してみた結果はこんな感じになりました。

キーボードの「A」を押すごとにキャラクターがジャンプしているので上手くいっているようです。

これでいちいち専用の変数を用意したりしなくてよくなるのはすごく良いですね!

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 アニメーションブループリント(Animation Blueprints)で「Actor」を取得する(Get Owning Actor)

アニメーションブループリント(Animation Blueprints)で「Actor」を取得する方法です。

公式ドキュメントはこちら。

・アニメーションブループリント(Animation Blueprints)
https://docs.unrealengine.com/5.0/ja/animation-blueprints-in-unreal-engine/

「Actor」を取得するには「Get Owning Actor」ノードを使います。
AnimBPでActorを取得000
特に入力は必要なくそのまま使えます。

実際に使ってみるとこんな感じになります。
AnimBPでActorを取得001
「Get Owning Actor」で「Actor」を取得しています。
そのままだと実際のゲーム上のキャラクターになっていないのでキャストをして使います。

と、こんな感じで使うことができます。
基本的なことではあるのですが覚えておきたいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 アニメーションブループリント(Animation Blueprints)で「Pawn」を取得する(Try Get Pawn Owner)

アニメーションブループリント(Animation Blueprints)で「Pawn」を取得する方法です。

公式ドキュメントはこちら。

・アニメーションブループリント(Animation Blueprints)
https://docs.unrealengine.com/5.0/ja/animation-blueprints-in-unreal-engine/

「Pawn」を取得するには「Try Get Pawn Owner」ノードを使います。
AnimBPでPawnを取得000
特に入力は必要なくそのまま使えます。

実際に使ってみるとこんな感じになります。
AnimBPでPawnを取得001
「Try Get Pawn Owner」で「Pawn」を取得しています。
そのままだと実際のゲーム上のキャラクターになっていないのでキャストをして使います。

と、こんな感じで使うことができます。
基本的なことではあるのですが覚えておきたいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE5/UE4 アニメーションブループリント(Animation Blueprints)のステートマシン(State Machines)でステート(State)遷移時のブレンド時間を設定する(Transition Rules、Duration)

アニメーションブループリント(Animation Blueprints)のステートマシン(State Machines)でステート(State)遷移時のブレンド時間を設定する方法です。

公式ドキュメントはこちら。

・アニメーションブループリント(Animation Blueprints)
https://docs.unrealengine.com/5.0/ja/animation-blueprints-in-unreal-engine/

・ステートマシン(State Machines)
https://docs.unrealengine.com/5.0/ja/state-machines-in-unreal-engine/

ステートマシンのステート遷移時のブレンド時間を設定するには遷移ルール(Transition Rules)に設定します。
遷移ルールの「継続時間(Duration)」にブレンド時間を設定します。

まずは「遷移ルール(Transition Rules)」を選択します。
ステート間のブレンド時間設定000

選択した「遷移ルール(Transition Rules)」の詳細で「継続時間(Duration)」を設定します。
ステート間のブレンド時間設定001

これでステート遷移じのブレンド時間の設定ができました。
かなり初歩的なことではありますが、一応のメモということで…。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

PREV | PAGE-SELECT | NEXT