- ノード一覧を解説する前の準備
- ①イベントBeginPlay (ゲーム開始時に実行)
- ②PrintString (テキスト表示)
- ③イベントTick (毎フレーム実行)
- ④Add:加算する (足し算)
- ⑤Subtract:減算する (引き算)
- ⑥Keyboard (キー操作入力)
- ⑦Random Integer in Range (ランダムな整数作成)
- ⑧Rondom Float in Range (ランダムな小数作成)
- ⑨Equal:等しい(二つの値が同じか判別)
- ⑩Branch:ブランチ(処理の分岐)
- ⑪Greater:より大きく (一方の値より大きい場合にtrue)
- ⑫GreaterEqual:以上 (値が一方の値以上かどうか)
- ⑬Delay (処理の時間を遅らせる)
- ⑭DestroyActor (アクタの削除)
- ⑮SpawnActorfromClass:クラスからアクタをスポーンします (アクタの生成)
コメント🐤
では今回はブループリントのゲーム開発において必ず使用する、初心者の方が最初に覚えておきたいノードを紹介していきます。最初に少し準備を行います。
ノード一覧を解説する前の準備
ノードをたくさん紹介するのですが、自身で一つ一つ丁作成して試していってもらっても構いませんし、流し読みでも構いません。なお、紹介するノードはレベルブループリントにノードを作成していきます↓
ノードをお気に入り登録する方法
ノードは一覧でノード名の左に小さく星のマークが出てくるので、それをクリックするとお気に入りに登録する事ができます。
お気に入りを開く場合はウィンドウ > パレットにあります。
ノード名が覚えられない最初の内はこの機能はおすすめですが、基本的に検索をして作成した方が速いです。
①イベントBeginPlay (ゲーム開始時に実行)
イベントBeginPlayはゲーム開始時に繋がっているノードを実行するノードです。
例えばこのノードで「ゲームプレイ時」に「テキスト表示」するというノードになります。
②PrintString (テキスト表示)
ビューポート左上にテキスト表示します。ノードが問題なく機能するかどうか試す時にこのノードを使用する事が多いです。
このノードだと以下のようにプレイ時にビューポート左上に表示されます。
③イベントTick (毎フレーム実行)
イベントTickは毎フレーム、繋げたノードを実行するノードです。例えばゲームが60fpsなら1秒間に60フレームあるという事なので、イベントTickノードは一秒間に60回実行されます。
例えば上のようにノードを組んでプレイするとテキストが毎フレーム出力されます。
コメント🐤
イベントTickの注意点として、毎フレーム処理をするという事はその分負荷がかかるという事です。初心者の方は最初は負荷について気にする必要はありませんが、ブループリントを組む時にはできるだけ処理の回数を減らすという事も重要になってきます。例えばただHelloと一回表示させたいだけならイベントBeginPlayなどを使用した方が処理は一回で済み、負荷も軽くなります。
イベントとは?
赤い色のノードはイベントと呼ばれ、ノードを実行するためのタイミングを決めるノードになります。例えばBeginPlayやTickはイベントにあたります。
コメント🐤
ノードは英語名,日本語一緒に紹介していきます。なお、以下からInteger型のHPという変数を使用しますので、作成する方はこの変数も作成しておきましょう。
④Add:加算する (足し算)
Addノードは足し算するノードです。Int型やFloat型の変数に対して足し算が行えます。
例えばInt型のHPという変数を作成してAddノードに接続します。もう一方の入力値に10と入力すると、デフォルト値の0と入力値の10で、0+10=10となりテキスト表示されます。
「ピンを追加」をクリックで足す入力値を増やす事ができます。
Addノードは例えばHPを回復させたい時に使用します。
⑤Subtract:減算する (引き算)
Subtractノードは引き算するノードです、Intの型やFloatの型の数値を引く事ができます。
例えば一方にInt型のHPという変数のデフォルト値0、もう一方にノード内に10と記載すると0-10=-10となりテキスト表示されます。
検索時には「-」「+」といった記号でもヒットします↓
Subtractノードは例えばHPからダメージ分引きたい時に使用します。
コメント🐤
他にも掛け算が行える「Multiply:乗算する」ノードや、「Divide:除算する」ノードがあります。
⑥Keyboard (キー操作入力)
特定のキーを入力したタイミングで処理を実行するノードです。
例えば上のノードではFキーを押した瞬間に「キーが押された」、離した瞬間に「キーが離された」とテキスト表示されます。例えばFキーでアイテムを拾う時などにこのノードを使用します。
日本語エディタの場合はキー入力は「F キー」と入力すると表示されます。英語だと「F key」で出てきます。他にもAキーや数字のキーなども設定できます↓
⑦Random Integer in Range (ランダムな整数作成)
RandomIntegerinRangeノードはランダムな整数(Integer)を作るノードです。
ノードの内のMinが最低値でMaxが最高値になり、その数値を含む間の数値がランダムで生成されます。なのでMinが0,Maxが5に設定した場合は0,1,2,3,4,5の中からランダムという事になります。
上の場合だとRandomIntegerでMinで0,Maxを3にしたので0,1,2,3の値がランダム生成されて、その値が文字列に変換されてテキスト表示されます。0 ~ 3までランダム生成した結果↓
このノードは例えばガチャを実装する時に、ガチャの確立を決める時に使用したり、宝箱から出るアイテムをランダムにしたり、ランダムにさせたいものに使用していきます。
⑧Rondom Float in Range (ランダムな小数作成)
ランダムな小数の値(Float)を作るノードです。先ほどのRondom Integer in Rangeの使い方と同じです。
0.0 ~ 3.5に設定してランダム生成した結果↓
例えばランダムな場所にアクタを配置したい時などにこのノードは使用されます。
⑨Equal:等しい(二つの値が同じか判別)
Equalは日本語で言うイコールの事で、二つの値が一緒の場合にBooleanという型でtrueまたはfalseを出力します。
例えば上のノードはEqualノードに0と入力して、もう一方はInteger型のHPという変数(0)を接続します。0=0は式として成り立つのでtrueが出力されてゲームプレイ時にtrueとテキスト表示されます↓
例えば下のノードだと、HPは0で入力値は1にしているので、0=1は成り立たないのでfalseとなります。
このノードは一体何に使うのかは次のBranchノードで解説します。
コメント🐤
検索時は記号で検索すると出てきます↓
⑩Branch:ブランチ(処理の分岐)
ブランチノードとは、条件によってtrueに接続されたノードを実行するか、falseに接続されたノードを実行するか分岐させるノードです。
変数の型の種類にはBooleanという「true」または「false」というどちらか二つのデータしか持たないものがあります。そのBooleanの変数をConditionのピンに接続する事によってtrueの場合とfalseの場合と処理を分岐させる事ができます。
例えば以下の画像では、HPが0だった場合にEqualノードで0=0となり、trueが出力されます。ブランチでtrueのノードが実行されて「HPは0!」と表示されます。
もう一つ例を紹介します。例えば下の画像ではガチャの実装に使われるようなブループリントを作成しています。RandomIntegerinRangeで0,1,2という値をランダム生成してその次にEqualノードに記入されている「0」とイコールの場合のみに「当たり」とテキスト表示して、一緒ではない場合で「はずれ」とテキスト表示します。こんな感じに確立を実装する事ができます。
なので上のノードの場合、毎回0~2までのランダム値が生成されて0と一致しなかった場合ははずれ、一致した場合はあたりと表示されます。
コメント🐤
Branchノードに接続するノードはEqualノードの他にも色々あるので紹介していきます↓
⑪Greater:より大きく (一方の値より大きい場合にtrue)
Greaterは値が一方の値より大きい場合はtrue,大きくなかった場合はfalseになります。
例えば上の場合ではHPが10だった場合に、10>0という式が成り立つのでtrueが出力されます。つまりGreaterノードの上のピンが左側で、下のピンが右側に配置され、「HP(10) > 0」という式が成り立つ訳です。HPが10だった場合、「HPは残っている」とテキスト表示されます。
✓ 反対はLess(より少ない)ノード
反対はLessノードになります。式にすると「HP<0」となりHPが100だった場合、100<0で式は成り立たないのでfalseが出力されます。
⑫GreaterEqual:以上 (値が一方の値以上かどうか)
GreaterEqualノードは値が一方の値以上の場合true,そうでなかった場合falseを返します。なのでGreaterと違うのは値が一緒だった場合もtrueになるという事です。
例えば上のノードでHPが1だった場合、入力値は1なので「1>=1」となりtrueが出力され、「HPが残っている」と表示されます。つまりこの場合だとHPが1以上だった場合もtrueが出力されます。
✓ 反対はLessEqual(以下)ノード
反対派LessEqualノードになります。HPが0だった場合、0<=0の式が成り立つのでtrueが出力されます。
⑬Delay (処理の時間を遅らせる)
処理の時間を遅らせます。例えば以下の処理を組んでDurarionを1に設定するとゲーム開始時1秒後にテキストが表示されます。
⑭DestroyActor (アクタの削除)
DestroyActorはアクタを削除するノードです。作ってみましょう。
- コンテンツブラウザを開いて、右クリック > ブループリントクラス > アクタを選択してCubeと名付けます。
- コンポーネントの追加からCube(キューブ)を追加します。
- イベントグラフを開いて、以下のノードを作成します。Delayには1秒といれます。
これでゲーム開始後1秒後にアクタを削除するノードが完成しました。 - プレイするとアクタが1秒後に削除されます↓
例えば、アイテムを拾った時にDestoryノードを使用してレベル上から削除します。
⑮SpawnActorfromClass:クラスからアクタをスポーンします (アクタの生成)
Spawn Actor from Classノードはアクタを生成するノードです。例えばゲーム中にアイテムをスポーンさせたい時に使用します。これも実際に作ってみましょう。
-
コンテンツブラウザでブループリントクラス > Actorを作成して名前をBallにします。
-
追加からSphere(球)を追加します。
-
必須ではないですが、重力も有効にしておきましょう。Sphereを選択した状態で物理の項目にあるSimulatePhysicsにチェックを入れます。
-
作成したBallのイベントグラフではなく、レベルブループリントを開いて、BeginPlayからSpawnActorfromClassノードを作成し、Class(生成するブループリントクラス)にBallを選択します。
-
次に生成する場所、トランスフォームを決定します。SpawnTransformの項目で右クリック > 構造体ピンを分割を選択します。するとトランスフォームの項目が位置,回転,縮小と展開されました。
-
生成する位置を決めましょう。適当にレベルのキューブを動かして生成する位置を決めます。決めたらトランスフォームの位置を右クリック > コピーします。もうキューブはいらないので削除します。
-
SpawnTransformLocationから変数を作成します。SpawnTransformLocationを右クリック > 変数へ昇格を選択します。SpawnTransformLocationというVector型の変数が作成されます。
コメント🐤
Vector型の変数は三つの小数の集まったものになります。例えばトランスフォームの位置などにこの変数を使用します。
-
コンパイルして、 SpawnTransformLocationを選択した状態でデフォルト値にペーストします。
-
プレイしてみましょう。開始と同時にボールが生成されます。
ノード解説
SpawnActorfromClassノードでは、生成するアクタと生成するトランスフォーム(位置,回転,大きさ)を決定する事ができます。今回変数を作成した理由は変数ではないと位置の数値をコピペできないためです。なので変数を作成しない場合は直接値を入力しましょう。ただ手動で入力するのは少し面倒ですね。
これでノード一覧の紹介は以上になります。
コメント🐤
今回初心者の方向けに必ず使用するであろうノードをまとめてみました。ノードはたくさん種類がありますが、頻繁に使用するものは数十個程でそれらを覚えてたら大体の機能は作る事ができます。実際に使用して徐々に覚えていきましょう。