ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】〈Tips〉UEC++マクロ翻訳 ~UPROPERTY編~

目次

 

はじめに

UEC++で利用できるUPROPERTYのマクロをDeepL翻訳したものの一覧です。

順番はソースコードに記載されている順番になっております。

オリジナルはソースコードの以下のパスにあります。

~\Epic Games\UE_5.0\Engine\Source\Runtime\CoreUObject\Public\UObject\ObjectMacros.h

UE5.0.3時点のデータです。

内容に差異がありましたらコメントまでお願いいたします。

UCLASSと差別化するためにフォントカラーを変更しています。

UPROPERTY

 

 Const,

このプロパティは const であり、const としてエクスポートする必要があります。

 

 Config,

プロパティは、永久プロファイルとしてiniファイルにロード/保存する必要があります。

 

 GlobalConfig,

 上記と同じですが、サブクラスではなくベースクラスから設定をロードします。

 

 Localized,

プロパティはローカライズ可能なテキストとして読み込まれる必要があります。ReadOnlyを意味する。

 

 Transient,

プロパティは一過性である:保存されるべきではなく、ロード時にゼロ埋めされます。

 

 DuplicateTransient,

 プロパティは、あらゆるタイプの複製(コピー&ペースト、バイナリ複製など)の際に、常にデフォルト値にリセットされるます。

 

 NonPIETransient,

PIEセッションで複製されない限り、プロパティは常にデフォルト値にリセットされます - 非推奨、代わりにNonPIEDuplicateTransientを使用

 

 NonPIEDuplicateTransient,

PIEセッションのために複製されない限り、プロパティは常にデフォルト値にリセットされます。

 

 Ref,

関数呼び出し後、値がコピーアウトされる。関数のパラメータ宣言時のみ有効です。

 

 Export,

オブジェクトのプロパティは、そのオーナーと一緒にエクスポートすることができます。

 

 NoClear,

エディタのクリア(およびブラウズ)ボタンを非表示にします。

 

 EditFixedSize,

 配列の要素は変更可能であるが、サイズは変更できません。

 

 Replicated,

 プロパティは、ネットワークレプリケーションに関連するものです。

 

 ReplicatedUsing,

プロパティは、ネットワークレプリケーションに関連するものです。プロパティがレプリケートされたときにアクターに通知します(使用法:ReplicatedUsing=FunctionName)

 

 NotReplicated,

レプリケーションをスキップする(構造体メンバとサービスリクエスト関数のパラメータのみ)

 

 Interp,

シネマティクスで使用するための補間可能なプロパティです。常にエディタで設定可能です。

 

 NonTransactional,

このプロパティは 処理されません。

 

 Instanced,

プロパティはコンポーネントリファレンスです。編集とエクスポートを意味します。

 

 BlueprintAssignable,

MC Delegate のみ。 プロパティは、ブループリントで割り当てるために公開する必要があります。

 

 Category,

プロパティのカテゴリを指定する。使用方法は Category=CategoryName。

 

 SimpleDisplay,

プロパティは、デフォルトで詳細パネルに表示されます。

 

 AdvancedDisplay,

プロパティは、詳細パネルのアドバンスドドロップダウンに表示されます。

 

 EditAnywhere,

このプロパティがエディタ内のプロパティウィンドウで編集できることを示します。

 

 EditInstanceOnly,

このプロパティがプロパティウィンドウで編集できることを示すが、アーキタイプではなく、インスタンスに対してのみ有効です。

 

 EditDefaultsOnly,

このプロパティがプロパティウィンドウで編集可能であることを示すが、アーキタイプでのみで有効です。

 

 VisibleAnywhere,

このプロパティは、プロパティウィンドウに表示されるが、編集は一切できません。

 

 VisibleInstanceOnly,

このプロパティは、アーキタイプではなく、インスタンスのプロパティウィンドウにのみ表示され、編集できません。

 

 VisibleDefaultsOnly,

このプロパティは、アーキタイプのプロパティウィンドウにのみ表示され、編集できません。

 

 BlueprintReadOnly,

このプロパティはブループリントで読み取ることができるが、変更することはできません。

 

 BlueprintGetter,

このプロパティには、値を返すためのアクセッサがあります。BlueprintSetterまたはBlueprintReadWriteが指定されていない場合、BlueprintReadOnlyを暗示します。(使用法: BlueprintGetter=FunctionName)

 

 BlueprintReadWrite,

このプロパティは、ブループリントから読み取ることも書き込むこともできます。

 

 BlueprintSetter,

このプロパティには、値を設定するためのアクセッサがあります。BlueprintReadWriteを暗示しています。(使用法: BlueprintSetter=FunctionName)

 

 AssetRegistrySearchable,

AssetRegistrySearchable キーワードは、このプロパティとその値が自動的に追加されることを意味します。

 アセットレジストリを使用して、これをメンバー変数として含むアセットクラスインスタンスを検索します。 これは適切ではありません。

構造体のプロパティやパラメータに使用します。

 

 SaveGame,

セーブゲームの場合、プロパティはシリアライズする必要があります。

ArIsSaveGame が設定されたゲーム固有のアーカイブに対してのみチェックされます。

 

 BlueprintCallable,

MC Delegateのみ。 プロパティはブループリントのコードで呼び出せるように公開する必要があります。

 

 BlueprintAuthorityOnly,

 MC デリゲートのみ。このデリゲートは、BlueprintAuthorityOnly を持つイベントのみを (ブループリント内で) 受け取ります。

 

 TextExportTransient,

プロパティがテキスト形式にエクスポートされません。(例:コピー/貼り付け)

 

 SkipSerialization,

プロパティはシリアライズされるべきではなく、テキストにエクスポートすることができます。

 

 HideSelfPin, 

trueの場合、純度やconstなどに関わらず、自己のピンを表示したり接続したりできません。 InternalUseParamと同様。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

【UE4・UE5】〈Tips〉UEC++マクロ翻訳 ~UCLASS編~

目次

 

はじめに

UEC++で利用できるUCLASSのマクロをDeepL翻訳したものの一覧です。

順番はソースコードに記載されている順番になっております。

オリジナルはソースコードの以下のパスにあります。

~\Epic Games\UE_5.0\Engine\Source\Runtime\CoreUObject\Public\UObject\ObjectMacros.h

UE5.0.3時点のデータです。

内容に差異がありましたらコメントまでお願いいたします。

UCLASS

 classGroup,

このキーワードは、エディタでクラスが表示されるアクターグループを設定するために使用されます。

 

 Within,

 このクラスのインスタンスは、常に指定されたクラスの外部を持つべきであることを宣言する。 これは、オーバーライドされない限り、サブクラスによって継承されます。

 

 BlueprintType,

このクラスを、ブループリントの変数に使用できる型として公開します。

 

 NotBlueprintType,

このクラスがブループリントの変数に使用されないようにします。

 

 Blueprintable,

このクラスを、ブループリントを作成するための許容ベース クラスとして公開します。デフォルトは NotBlueprintable で、他に継承されていない限りは NotBlueprintable です。これはサブクラスによって継承されます。

 

 NotBlueprintable,

このクラスがブループリントを作成するためのベースクラスとして *NOT* 許容されないことを指定します。デフォルトは NotBlueprintable で、他に継承されていない限りは NotBlueprintable です。これはサブクラスによって継承されます。

 

 MinimalAPI,

このキーワードは、そのクラスがモジュールの外からアクセスできる必要があることを示しますが、すべてのメソッドがエクスポートされる必要はありません。

dynamic_cast<> などの動作に必要な自動生成メソッドのみをエクスポートします。

 

 customConstructor,

コンストラクタ宣言が自動的に生成されないようにする。

 

 Intrinsic,

クラスは C++ で直接宣言されており、UnrealHeaderTool によって生成されたボイラープレートはありません。

新しいクラスではこのフラグを使用しないでください。

 

 noexport,

このクラスでは自動生成されたコードは作成されません。ヘッダーは、メタデータを解析するためにのみ提供されます。

新しいクラスではこのフラグを使用しないでください。

 

 placeable,

ユーザーがこのクラスを作成し、エディタに配置することを許可します。 このフラグは、サブクラスに継承されます。

 

 notplaceable,

このクラスはエディタに配置できません(継承された配置可能フラグを打ち消します)。

 

 DefaultToInstanced,

このクラスのインスタンスはすべて「インスタンス化」されているとみなされます。インスタンス化されたクラス(コンポーネント)は、構築時に複製されます。このフラグはサブクラスにも継承される。

 

 Const,

このクラスのすべてのプロパティと関数は const であり、const としてエクスポートする必要があります。 このフラグは、サブクラスに継承されます。

 

 Abstract,

クラスは抽象的であり、直接インスタンス化することはできません。

 

 deprecated,

このクラスは非推奨であり、このクラスのオブジェクトはシリアライズ時に保存されません。 このフラグはサブクラスによって継承されます。

 

 Transient,

このクラスは保存できません。保存時に NULL を指定します。 このフラグは、サブクラスに継承されます。

 

 Optional,

このクラスはオプションであり、特定のコンテキストでは利用できない場合があります。オプションでないデータ型からの参照は許可されません。

 

 config,

コンストラクション時にオブジェクトの設定を読み込む。 これらのフラグは、サブクラスに継承されます。

コンフィグプロパティを含むクラス。使用法 config=ConfigNameまたはconfig=inherit(ベースクラスから設定名を継承する)。

 

 perObjectConfig,

オブジェクトの設定をクラス単位ではなく、オブジェクト単位で処理する。

 

 configdonotcheckdefaults,

configへのシリアライズ時に、base/defaults iniのチェックを行うかどうかを決定。

 

 defaultconfig,

オブジェクトの設定をDefault INIにのみ保存し、ローカルINIには保存しないようにしました。

 

 EditorConfig,

このオブジェクトにロードする場合、ロードするエディタ設定ファイルをマークします。

 

 editinlinenew,

これらは、プロパティエディタの動作に影響を与えます。

editinline 新規作成ボタンからクラスを作成することができます。

 

 noteditinlinenew,

editinline Newボタンからクラスを構築することはできません。

 

 hidedropdown,

エディターでクラスを選択するドロップダウンにクラスが表示されない。

 

 showCategories,

指定されたカテゴリをプロパティビューアに表示します。使用法:showCategories=CategoryNameまたはshowCategories=(category0, category1, ...)

 

 hideCategories,

プロパティビューアで指定されたカテゴリーを非表示にします。使用法:hideCategories=CategoryNameまたはhideCategories=(category0, category1, ...)

 

 ComponentWrapperClass,

このクラスが、本質的な機能をほとんど持たないコンポーネントのラッパークラスであることを示します (このため、ブループリントでこのクラスがサブクラス化されると、hideCategories や showCategories などは無視されます)。

 

 showFunctions,

指定された関数をプロパティビューアーに表示します。使用法:showFunctions=FunctionNameまたはshowFunctions=(category0, category1, ...)

 

 hideFunctions,

指定された関数をプロパティビューア内で非表示にします。使用法:hideFunctions=FunctionNameまたはhideFunctions=(category0, category1, ...)

 

 autoExpandCategories,

プロパティビューアで自動的に展開されるカテゴリを指定します。

 

 autoCollapseCategories,

プロパティビューアで自動的に折りたたまれるカテゴリを指定します。

 

 dontAutoCollapseCategories,

自動折りたたみカテゴリのリストをクリアします。

 

 collapseCategories,

カテゴリーを使用せずに、エディターでプロパティを表示します。

 

 dontCollapseCategories,

エディターでカテゴリを使ってプロパティを表示する(デフォルトの動作)。

 

 prioritizeCategories,

カテゴリの表示順を指定し、指定しない場合はデフォルトの表示順となります。

 

 AdvancedClassDisplay,

クラスのすべてのプロパティは、デフォルトでメイン表示では非表示になり、詳細表示セクションでのみ表示されます。

 

 ConversionRoot,

 ルート変換は、サブクラスが階層を上がっていく最初のルートクラスの子クラスにのみ変換できるように制限します。

 

 Experimental,

このクラスを 'experimental' (全くサポートされておらず、文書化されていないプロトタイプ) としてマークします。

 

 EarlyAccessPreview,

 このクラスを「早期アクセス」プレビューとしてマークします (製品としてすぐに使えるとは言えませんが、「実験的」よりは一歩進んでおり、来るべきもののプレビューとして提供されます)。

 

 SparseClassDataType,

一部のプロパティは、クラスごとにサイドカー構造体に一度だけ格納され、クラスのインスタンスには格納されません。

 

 CustomThunkTemplates,

CustomThunkの実装を含む構造体を指定します。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

【ESP32】A fatal error occurred: MD5 of file does not match data in flash!←このエラーで書き込めなくなった時の対処法

目次

 

 

 

はじめに

 

マイコンESP3の開発ボードでArduinoコンパイルは通るのにA fatal error occurred: MD5 of file does not match data in flash!で書き込めなくなった時の対処法です。

この問題に半日使ったので、解決法の一例としてまとめておきます。

 

対処法

 

Pythonのインストール

公式サイトから最新版のインストーラーをダウンロードします。

www.python.org

 

Pathを自動で通してほしいのでAdd Python ~にチェックを入れてください。

 

②ESPToolのインストール

 

コマンドプロンプトを開きます。

 

 

pip install esptoolと入力してインストールします。

 

③通信ポートの確認

接続されているESPのポートを確認します。

バイスマネージャーを開きます。

 

ポートからCOMが何番か調べます。画像ではCOM5

 

ここで接続しているマイコンが出てこない場合はPCが認識できていないのでケーブルの不良かマイコンの故障を疑いましょう。

 

④フラッシュステータスレジスタの書き換え

コマンドプロンプトに戻ります。

ESP32のSPIフラッシュステータスレジスタに書き込みます。

以下のコマンドを入力します。

COM5は先ほど調べたポートを指定してください。

esptool.py --port COM5 write_flash_status --non-volatile 0

 

Arduinoから書き込み

 

書き込みを行うとConnecting...と表示されたらマイコンのBOOTボタンを長押しします。

 

 

Writing at ~が出始めたらBootボタンから離します。

 

このログになったら書き込みが完了しました。

 

最後に

Twitterのフォローなどしていただければ幸いです。

【UE4・UE5】〈Tips〉HPやスコアで使える!カウントが自然に減ったり増えたりする仕組みを作ってみよう

目次

 

はじめに

タイマーが0になったり、ダメージを受けたりする表現を作るときに一瞬で数値が変化するのではなく値が急速に減っていく表現があります。

今回はそのテキストの実装例をまとめましたので参考になれば幸いです。

UE5.0.3のFPPサンプルで解説しますが制限なく実装できます。

 

▼この記事でできること

 

解説

⓪事前準備

Fキーを押したらカウントが200から50、50から200に変化するテキストを実装してみます。

 

ウィジェットでもできますが、作成に手間がかかるのでTextコンポーネントで実装します。

 

任意のキャラクターBPにテキストコンポーネントを実装します。

 

Meshの子にして位置を調整します。

 

実行してテキストが表示される状態まで出来ました。

 

数値を変更してみます。

まずInt型の変数scoreを作ります。

デフォルト値は200です。

 

画像のようにノードを組みスコアが変化できるようにしました。

 

押すたびに値が変化すれば成功です。

 

①補間の作成

 

カスタムイベントLerpCountを作ります。

引数にFloat型のLerpTime,int型のCurrentCount,TargetCountの3つを用意します。

 

タイムラインを作成します。名前をLerpTimelineとしました。


タイムラインを開きフロートトラックのAlphaを作成します。

長さを1に、0から1への補間用のカーブを作成します。

 

イベントグラフに戻りAlphaから入力された値を補間します。


変数にcache_scoreを作成します。

 

Updateにcache_scoreにセットします。

 

最後に関数LerpCountを呼び出します。

 

実行してみましょう。

 

LerpTimeが変化するまでの時間です。

またTimelineのカーブから数値の減衰を変更できるので試してみてください。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

【UE4・UE5】〈Tips〉日本一わかりやすくNiagaraでスパーク(火花)エフェクトを作ってみる

目次

 

はじめに

 

今回はUE4,5のエフェクトシステムのナイアガラの基本的な作り方と実装方法を紹介します。

 

▼この記事でできること

 

解説

⓪ナイアガラの概要

ナイアガラはエミッタとシステムで構成されます。

 

エミッタで基本的なエフェクトを作成し、システムで複数のエミッタを組み合わせることで再利用可能なエフェクトを作成できます。

 

①ナイアガラエミッタの作成

コンテンツ右クリックからNiagaraエミッタを選択します。

 

新規エミッタを選択

 

テンプレートが複数用意されています。

 

スパークは一定地点からはじけるようなエフェクトにしたいのでDirectional Burstをベースに作っていきたいと思います。

 

ナイアガラエミッタの頭文字 NE_を付けて

NE_Sparkという名前にしました。

 

②環境設定

エミッタを開くとプレビュー画面があるのですが、この背景だと見えづらいので変更します。

 

ウィンドウ→プレビューシーン設定を開きます。

 

環境→ShowEnv~のチェックを外し

Colorを黒にします。

 

プレビュー背景が黒くなりエフェクトが見やすくなりました。

 

③ナイアガラエミッタの編集

 

エフェクトはモジュールの組み合わせでできています。

モジュールを変更することで挙動を大きく変えることができ、右のチェックボックスから有効無効を変更できます。


1.いっぱいパーティクルを出してみる

SpawnBurstIn~で生成量と生成する時間を調整できます。

極端に大きい値を入れて生成量が変化するのを確認しましょう。

 

 

値をランダムにすることもできます。

右の▼からRandomRangeIntを選択してみましょう。

 

最小値と最大値が編集できるようになりました。

 

このように定数ではなく値をランダムにすることで、同じエフェクトでもゲームっぽさを軽減することができます。

 

2.もっと拡散するようにする

パーティクルのスポーンにAddVelocityというモジュールがあります。

これはスポーン時に加える力なので、初速を決めるモジュールです。

既にランダム化されているようなので、値を調整してみましょう。

 

タイムラインのタブから~秒後の位置を見ることができます。

長いエフェクトだと、確認に時間がかかってしまうので積極的に活用してみましょう。

 

拡散方向はConeのタブから変更できます。

斜め上方向に拡散してほしいのでZに1、Angleを90にしてみましょう。

 

Axisはプレビュー画面のアイコンを参考に調整しましょう。

▼編集前

▼編集後

 

3.光の筋を変形させる

リファレンスの火花を観察すると速度が速いと長い光の筋ですが速度が落ちると短く、粒子状になるようです。

このような速度に応じて形状を変化させたいときは、パーティクル更新のScaleSpriteSizebySpeedモジュールを使います。

 

速度が速いときはXを1.5にしてより光の筋のように見せます。

 

4.カラーを変更してみる

火花といったらオレンジ色なので着色してみましょう。

スポーン時のカラーを変更してみます。

より火花っぽくなりましたね

 

少し物足りないのでScaleColorで少し赤く発光させてみましょう。

 

▼編集前

▼編集後

 

5.当たり判定を追加する

粒子に当たり判定を持たせるためにコリジョンモジュールを追加します。

パーティクル更新にCollisionを追加します。

 

これでエミッタの準備完了です。

 

④ナイアガラシステムの作成

エミッタ単体では使用できないためシステムを作成します。

エミッタを右クリックしてシステムを作成します。

 

ナイアガラシステムの頭文字NS_をつけてNS_Sparkとしました。

 

システム化されたNiagaraはレベル上に配置できます。

ドラッグアンドドロップで配置してみましょう。

 

一度しか再生されないのでシステム側でループ再生できるようにします。

NS_Sparkを開いてエミッタの更新からLoopBehaviorをInfiniteに変更します。

 

レベルに戻るとパーティクルが出続けると思います。

Durationで間隔を短くできるので試してみましょう。

 

 

⑤おまけ、ブループリントから生成する

こちらの記事の最後でこのエフェクトを着弾したときに生成するようにしていました。

namiton.hatenablog.jp

 

Niagaraを生成するにはSpawnSystem系のノードを使います。

レイのヒット時のNormal方向からエフェクトがスポーンするようにしています。汎用性が高いのでどんどん使っていきましょう。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

【UE4・UE5】〈Tips〉ヒット時のダメージを数字で出してみよう

目次

 

はじめに

FPSやTPSでよくあるダメージ表示を数字で出す方法です。


同じような解説を防ぐため、リコイルの記事をベースに解説しています。

namiton.hatenablog.jp

 

 

 

▼この記事でできること

 

解説

 

①ダメージテキストブループリントの作成

右クリックからブループリントクラス

 

アクターを親としたBP_DamageTextを作ります。


作成したブループリントを開いたらコンポーネントの追加からWidgetを追加しましょう

 

イベントグラフに移動して画像のように組みます。

タイムラインで移動させ、終了したらDestroyActorで破壊します。

 

タイムラインの編集

タイムラインノードを開いて長さを0.2秒

フロートトラックを追加して名前をMoveUpとします。

 

0.2秒後に1になるようなキーを打ちましょう。

 

イベントグラフに戻りDeltaLocationに接続します。

タイムラインのキーで0~1にしているので掛け算することで値の大きさを調整できます。

 

②テキストウィジェットの作成

ウィジェットブループリントWBP_DamageTextを作ります。

 

ウィジェットを開きCustom,100、35に設定します。


パレットからTextを検索しドラッグアンドドロップで配置します。


階層からDamageTextにリネームします。

 

詳細からIsVariableにチェックを入れ、Textに仮で100と入力しておきます。

 

着弾地点と文字が被らないように少し右上に表示させるようにトランスフォームを調整します。

 

ウィジェットをグラフに切り替え、テキストを外部から編集しやすいようにイベントを作成します。

 

カスタムイベントWBP_SetDamageTextを作成してインプットにString型の変数を作ります。

変数化されているDamageTextにSetTextをすれば完了です。

 

③BP_DamageTextにウィジェットの適応

 

BP_DamageTextに戻り、Widgetの詳細から画像のようにセットアップします。

 

表示するテキストを変更できるようにBeginPlayを削除してカスタムイベントに変更しておきましょう。

カスタムイベントPlayDamageTextを作成してWBP_DamageTextのイベントを呼ぶようにします。この時インプットにStringを作成して接続します。

 

④スポーン設定

後は当たった場所にBP_DamageTextを生成するだけです。

BP_Rifleを開きます。

リコイルの記事で書いたライントレース(当たり判定)の最後に記述していきます。

 

※シーケンスの0は元からあるの音とモンタージュに繋がってます。

 

当たった場所からRandomな位置を足した場所にBP_DamageTextを生成するシンプルなノードです。

 

後は表示させたいStringをセットするPlayDamageTextイベントを呼べば完成です。

 

実行してみましょう。

当たった場所から数字が表示されていれば成功です。

 

タイムラインを変更することで文字の消えるまでの時間や移動方向を編集できるのでやってみてください。

 

これで基本的な実装は終わりです。

ここからは少し踏み込んだ実装例です。

 

⑤+α 当たったものに応じてテキストを変更する

的を用意してそれぞれヒット時のダメージ係数がかかるようにしましょう。

弾の威力が10の場合は、2倍なら20 、5倍なら50 、、、という感じです。

 

みんな大好き(強要)インターフェースを作ります。

 

名前はBPI_HitSystemです。

 

インプットにIntegerアウトプットにStringを持った関数GetDamageTextを作ります。



ヒット対象のブループリントBP_HitTargetを作ります。

 

StaticMeshコンポーネントを追加して

 

メッシュとサイズを変更します。

 

クラス設定からインターフェースを実装します。

 

インターフェースGetDamageText関数を開き変数Scaleを作成、デフォルト値を1、インスタンス編集可能にチェックを入れます。

 

BP_Rifleを開きインターフェースを実装しているか検証し呼び出します。

 

レベルにBP_HitTargetを配置し詳細からダメージ係数を自由に変更します。

 

実行してそれぞれ値が変化していることを確認出来たら成功です。

 

あとはレティクルを追加したり、着弾エフェクトを出してみたり試してみましょう!

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

【UE4・UE5】〈Tips〉もっと!諦めないで!出し方が分かりづらいマテリアルノード集

目次

 

はじめに

 

ビギナー向けに初見殺しのマテリアルノードの出し方を備忘録としてまとめてみました。

この記事、、過去の自分に送りたいッ! パート2

 

分かりづらいマテリアルノード集

 

Mask

とても汎用性が高いノード。

ColorからR(赤)要素だけを取り出したりいろいろ使えます。

 

maskいっぱいありますが、演算のComponentMaskがこれです。

 

詳細から取り出したい値にチェックを入れましょう。

 

Lerp

A,Bの割合をAlphaで補間するよく使われるノード

 

これもいっぱいありますがLinearInterpolateが該当ノードです。

※ L+左クリックでも出せます。

 

ワールド位置系

海外チュートリアルで挫折しがちなAbsoluteWorldPositionなどなど、、

検索しても出てこなくてつらい記憶があります。

マテリアルでワールド位置やカメラの位置がとれるので、凝ったマテリアルを作りたい人は必ず知っておきたいノードです。

 

WorldPositionで検索しましょう。

 

詳細から取りたい値を設定します。

 

定数

数字だけのノードは定数ノードです。

 

Constantと検索して目的の型を選択します。

※数字+左クリックでも出せます。

 

パラメータ

ノード名にParam()とある場合は変数です。

変数が接続されているものからマテリアルインスタンスを作ると詳細に公開されます。

 

例:色違いを作る。

 

定数を右クリックしてパラメータに変換を押します。

 

マテリアルパラメータコレクション

深緑のノードはマテリアルパラメータコレクションノードです。

簡単に言うとブループリントから操作できる変数です。

 

 

あらかじめマテリアルパラメータコレクションを作成してあることが条件です。

 

ドラッグアンドドロップでノードを配置できます。

 

詳細から取得したいパラメータ名を設定できます。

 

マテリアルとブループリントとの連携は過去に記事を書いているのでよかったら読んでみてください。

namiton.hatenablog.jp

 

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。