見出し画像

超初心者のUE5学習メモ-18-:ブループリントを読み解け!「ノードの種類」

#Unreal_Engine_5 の学習記事の続き。

今回『ブループリント』の編集画面について見ていったので、今回はようやく中身を見ていきます。ノードと呼ばれる箱についてやっていくよ!

《今日の学習範囲》

ブループリントの画面中央にある「箱」と「紐」の部分について学んでいきます。

この箱のことを「ノード」、紐のことを「エッジ」と言うそうです。

んで今日はノードを調べていきたいんだけども、これを作成しようとすると……

カテゴリだけで軽く100個を超えとるやんけ……

これ1つひとつを見ていくのは時間がいくらあっても終わらないので、最初から用意されてるチュートリアル的なゲームから、既にあるブループリントで使われているノードを見ていこうかと思います。

とりあえず今回はこちらの「TopDown」という見下ろし型のゲームにある、キャラのコントロールについてプログラムされたBP(ブループリント)を見ていきます。


《BP_TopDownController》

コンテンツドロワーから「TopDown」フォルダの「Blueprints」フォルダを開き、そこにあった「BP_TopDownController」というBPを見ていきます。

上の画像からBPをダブルクリックで開くと……

このように3つに区分けされたBPが表示されました。この大きな箱のことを「コメントボックス」と言うそうです。それぞれ……

  • Set Destination Input - Gamepad and Mouse

  • Set Destination Input - Touch

  • Event Tick

という題目が書かれてます。それぞれ簡単に日本語にすると……

「Set Destination Input」は「インプットから行き先を設定する」という機能の概要だ。

「Gamepad and Mouse」「Touch」は「コントローラーやマウス、スマホなどのタップ」という前文の「インプット」の内容のことだと思われる。

「Event Tick」は「ゲーム中に常に動作するイベント」という感じっぽい。Tickはいわゆるフレームのことで、1フレームごとにイベントが動作するというイメージ……かな、多分。


なお題目の後には謎の英文も書かれています。

前者2つの「Set Destination Input」には「On Released, if input wasn't held, try to move the possessed character to Location Under Cursor」。

日本語訳すると「ボタンを離した時、もしもインプットの情報がない場合、代入された"カーソル下の位置"へとキャラを移動させる」という感じかな。なお"カーソル下の位置"というのは別のBPで設定されているようで、おそらくクリックした時に毎度書き換えられる情報だと思われる。

そして「Event Tick」には「When Input is pressed, the possessed character will follow mouse cursor or finger」と書かれてる。

こちらも日本語訳すると「ボタンが押された時、キャラがマウスor指を追う」という感じ。

つまりはこの部分のブループリントで行われているプログラムの内容を示している。今後自作していく場合でも忘れないように記入するべきだね。


では各ノードを見ていく前に、このBPがどういう動作をするのか見ておこう。

このように「クリックした位置へとキャラを移動させ、同時にクリック位置に矢印のアニメーションを1度表示させる」というもの。

この動作を理解しながら中身を見ていきましょう。


《ノードを見ていこう》

今回の記事ではこちらの「インプットから行き先を設定する」BPを見ていきます。

ノードが使用される順番はどうやら左から右っぽいので、同じ流れで1つずつ調べていこう。


◆インプットアクション Set Destination

まずは始まりのノード。「インプットアクション」という名前を日本語訳すると「入力された際のアクション」という感じ。

「Pressed(押した)」「Released(離した)」という2つの項目からエッジが出ており、それぞれの状況で行われるイベントがこの後に繋がっているのかな。

「Key」のことはよく分かってません。調べたけど分からんです……


◆セット

セット。日本語訳すると「設定する」という感じなんだけど、もっと分かりやすくすると「変数を設定する」という内容のノードみたいだ。

変数とは数学でいう「x」とか「y」とかと同じで、データを格納しておく箱のようなもの。

その箱には「10」という数値を設定することもできるし、「たかし」という文章を設定することもできるし、更に「ON / OFF(True / False)」という正否のスイッチを設定することもできる。

今回の場合だと「Input Pressed(入力が押された)」という名前の変数(箱)に、チェックで「ON / OFF」を設定してます。

実際のインプット情報だけでなく、変数でも管理することでプログラムで使いやすくする……という感じのはず。


◆f Stop Movement

こちらは「現在実行中の動きを停止する」というプログラムだそうです。

ターゲットはおそらく「どの動きを停止するか」という感じだと思われる。「self」になっているのは……よく分からん。


◆変数

こちらは「Follow Time」「Pressed Threshold」という2つの変数を呼び出しているようです。

それぞれに何の情報が入ってるかはちょっと分かってないんだけど、とりあえず変数を取り出すノードがあるんだね。


◆<=

読み方は「小なりイコール」と私は昔学んだけど、世代や学校によって変わるのだろうか?

ともあれいわゆる「演算子」というやつだ。2つの値を比較して、条件によって「ON / OFF」の情報を次のノードへ送る感じ。

この「<=」は、A(上の緑丸)がB(下の緑丸)以下かどうかを判断する。今回の場合だと「Follow Time」が「Pressed Threshold」以下なら「ON(True)」を、超えているなら「OFF(False)」を出すということだ。

なおこのノードは「ユーティリティ」の「オペレータ」というカテゴリに入ってるみたい。


◆ブランチ

遅い朝食のことではない。これは「条件に応じて、通るエッジを変える」というものである。

さっきの演算子を「条件」と呼ぶならば、こちら「分岐」と呼べそうだな。

条件を左下の「Condition(状態)」に接続して、分岐前のエッジを左上に挿す。そして「True」と「False」それぞれの条件に合わせて動作させる流れを接続する。

今回の場合はFalseの際に何も起きず、Trueの際には動作するようにしてるね。


◆f Get Location Under Cursor

これ何だろうなと思ってダブルクリックしたらね……

なんか新しいBPが開かれた……

つまりこのノードは別のBPそのもので、「Get Location Under Cursor」というBPで出された結果を「BP_TopDownController」で使用している……ということだ。

このような小さいBPのことを「関数」と呼ぶっぽい。多分。

同じプログラムを使う場合とかはこういう小さいBPでまとめることが重要だね。プログラムを修正する際にそれ1つを変えるだけで全部変えられるから。こういう部分はRPGツクールMVのコモンイベントでしっかり学んだよ……

ともあれこのノードでは「Location」という情報が出されている。多分名前から察するに、カーソルの位置を算出してくれる……ということだと思う。


◆Move to Hit Location

このBPで最後のノード。つまりはこのプログラムがどういう結果・動作を起こすのかを決める部分。

なお先ほどと同じくこちらも「関数」になっており……

開くとこんな感じになっています。もう記事も長いのでここの機能をざっくり言うと……

「Simple Move to Location」でカーソル位置(Location)へとキャラを移動させ、「Spawn System at Location」でカーソル位置に矢印を表示させるというものだと思われる。

このようにしてキャラクターがクリックされた位置へと動くプログラムが出来ている訳だ。


《今回の学習まとめ》


  • BPは「コメントボックス」で機能ごとに区分けし、内容を記載しておくことが大事

  • 「インプットアクション」ノードは、ボタンの入力に対しての動作を作る

  • 「セット」ノードは、変数を設定できる

  • 「Stop Movement」ノードは、動作や移動を停止する

  • 「変数」ノードは、変数から値を取り出す

  • 「演算子」ノードは、変数から条件を出せる

  • 「ブランチ」ノードは、条件を元にエッジを分岐する

  • 「関数」ノードは、小さなBPを作ってまとめたり複製できる


今回で結構BPについて理解が深まった気がします。

やってることはRPGツクールとかと大して変わらないので、自分的にはすんなり分かったかな。ただ機能の数がとんでもないからそこが難しいところ。

また次も他のノードを見ていければと思います!

では、また次回お会いしましょう!


【短編ビジュアルノベルの制作中です↓】

【メンバーシップも募集中です】


もしも記事が参考になったら、スキやフォローよろしくね! 気が向いた時はサポートで支援していただけると嬉しいです。