お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2024/08/09 12:00

企画記事

【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう



1 2 3 4 5 6 7 8 9 10 11 12 13

10 メイン処理 スコアをカウントしよう P.5(10)へ



10.スコアをカウントしよう
メイン処理 2/2


 レベルと「的」が作れるようになった。これで,簡単な射撃演習場に仕上げることもできる。
 「そういえば,あのゲームはどんな感じに配置されてたっけ」と好きなゲームを起動して,それを参考にしながら,自分なりに作ってみても楽しいだろう。

 さて話は戻るが,本記事で目標としているのは「ミニゲーム」の完成だ。ミニゲームっぽくしていくために,ゲームルールを実装していこう。
 今回はレベル上の「的」を,すべて撃ち落とせばゲームクリアとする。制限時間やゲームオーバーはなしだ。

 実装の流れとしては,「スコアを加算していく仕組み」を作成し,「的」が撃たれたときに実行する処理を実装する。
 具体的には,スコアを加算していく「AddScore」というイベントを自作し,「的」の「On Component Hit(Cube)イベント」で「AddScoreイベント」を呼び出す流れだ。

 この仕組みを作り,少しずつ機能を広げながら,ゲームクリアまでを実装していこう。

10-1:「コンテンツ ドロワー」(Ctrl+Spaceバー)で「BP_FirstPersonCharacter」を開く
画像集 No.135のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-2:「BP_FirstPersonCharacter」の「イベントグラフ」を表示する
画像集 No.136のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-3:空いているスペースを右クリックして,「Add Custom Event...」を押す
画像集 No.137のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-4:赤いノードが追加される。これは「カスタムイベント」と呼ばれ,自由に作成できる。今回は,「スコアを加算するイベント」として使うので,名前は「AddScore」としよう
画像集 No.138のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

Custom Event ノード
画像集 No.315のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 自由にカスタマイズできるイベント

自動的にトリガーされる仕組みが備わっていないので,作っただけでは動かない
しかるべきタイミングで呼び出して,動かそう


 さて,今作った「AddScoreイベント」の中身,つまり「スコアを加算する処理」を実装していこう。
 スコアを加算していくには,現在のスコアを記憶しておく仕組みが必要だ。現在のスコアを忘れてしまった状態で,「的」を撃ってスコアが1増えたとしても,結局いくつなのかが分からなくなる。

 現在のスコアを紙に書いておけば,そんな問題とはおさらばだ。紙に書いておくように,値を保存しておく「変数」というものを利用する。
 今回は「Score」という変数を用意して,「的」を撃ちぬいた数をカウントしていこう。

10-5:画面左下の「変数」と書かれているところの「+」を押す
画像集 No.150のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-6:名前をスコア用に「Score」にしよう。名前の変更は右クリックから「編集」を選ぶか,変数を選択した状態でF2キーで可能だ
画像集 No.151のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-7:次に変数の型は,「Integer」を選択してほしい(説明は後述)。作った変数を選択した状態で,画面右側の「詳細」からも設定を変更可能だ
画像集 No.152のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-8:とりあえず,赤枠で囲った部分と同じようになっていればOKだ
画像集 No.149のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう


 「変数」と「型」について,簡単に説明しよう。
 まず,「変数」とは値を保存するための「箱」のようなものだ。この箱に保存された値を参照したり書き換えたりしていくことで,得点の管理やスコアボードの作成,プレイヤーネームの表示などさまざまなことができる。

 そして,「変数」には「型」というものがある。整数,小数などの数値や,文字列,オブジェクトなど,さまざまなデータの形式を表し,目的に合わせて使い分ける。
 今回作成するゲームは,「的」を落とした数を,そのままスコアとする。何かの個数を数える時は,1,2,3……と整数(数学的には自然数だが……)を用いるので,「Score変数」の「型」は「Integer」(整数)を選択した。

変数 値を保存しておくための箱
変数の形式(種類)

 整数を表現できる「型」は「Integer」のほかにも「Byte」や「Integer 64」などが用意されているのだが,どちらも癖があるので,基本的に整数を扱う場合は「Integer」と覚えて大丈夫だ。

 座学で覚えようとすると,大変かもしれない。ブループリントでは「型」ごとに色が設定されているので,色を頼りに作業していたら,自然と感覚が掴めていることだろう。詳細を覚えていくのは,その後からでも全然構わないのだ。

「型」の種類によって,それぞれ色が付けられている
画像集 No.153のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

 数字でも「整数」や「小数を含む数」など,「型」が細かく分けられているのには,いくつか理由がある。その1つがリソースの削減だ。
 これは,ダンボールをイメージしてくれればよい。荷物を発送する際に,大きなダンボールがあればどんな荷物が来ても中に入れられるが,場合によっては無駄なスペースが大きくなる。変数も同じで,範囲が広いものを常に使用しているとリソースを食い荒らし,PCに余分な負荷をかけてしまうのだ。

 また,もう1つの理由として,意図しないデータのやり取りを防ぐことが挙げられる。
 例えば,WEBでフォームに入力する際,電話番号や郵便番号の入力で「全角数字」を入力したら「半角数字で入力してください」または,その逆で「半角数字」を入力して「全角数字で入力してください」と,怒られた経験はないだろうか。これは,入力できるデータ形式を制限することで,プログラマが想定していないデータの入力を防いでいるのだ。


10-9:「Score変数」を「AddScoreイベント」付近にドラッグ&ドロップする
画像集 No.154のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-10:「Get Score」を選択する
画像集 No.155のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-11:追加された「Scoreノード」からワイヤーを伸ばし,「++」を検索して,「Increment Int」を押す。これは,変数に「1を加算する」処理であり,「Score変数」の値を「1増やす」という処理になる
画像集 No.156のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-12:実行ピン同士を接続する
画像集 No.157のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

Increment Intノード
画像集 No.320のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 「Integer型」の変数の値を1増やして,更新するノード

increment(インクリメント)は,プログラミング分野で,変数の値を1増やすという処理を意味する。反対に,1減らす処理のことをdecrement(デクリメント)という。ノードを検索するときは,インクリメントの「++」に対して,「--」と入力すればよい

10-13:「Print Stringノード」を追加する
画像集 No.158のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-14:「++」からワイヤーを伸ばし,「In String」に接続する
画像集 No.159のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-15:黄緑色と赤紫色のピンを持つノードが追加された。これは「Integer型」(黄緑色)を「String型」(赤紫色)に変換するもので,型の違いで本来は接続できないのを,接続できるようにする。このように,型を変換することを「キャスト」と呼ぶ
画像集 No.160のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう


 「キャスト」とは変数の型を変更することだ。今回「Integer型」を「String型」に変更して,「Print Stringノード」で表示する文字列とした。

キャスト 文字列の「型」を変更すること
Integer型 整数のデータを保存するための「型」
String型 文字列のデータを保存するための「型」
文字列 「英数字」「かな文字」「記号」など,文字のみで構成されたデータ

 話を簡単にするため,数値で考えてみよう。
 例えば,整数「10」があるとする。この「10」に小数「0.1」を足した場合,整数のままでは小数が入り込む隙間がないので「0.1」は消え去り,値は「10」のままだ。
 この「10」を,小数を含む「10.0」に変換してから「0.1」を足せば,「10.1」というふうに小数を含む表現が可能となる。

型のイメージ ※実際の処理を表現したものではない
画像集 No.282のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

 型を変更することで,小数を含む数を足し算できるようになった。このように,少しデータを足してあげることで型を揃えられるものは,データピン同士を繋いだタイミングで,自動的に「キャスト」の処理を追加してくれる。
 「整数」から「小数を含む数」へキャストする際に,小数部分のデータを足して調整するように,「Integer型」から「String型」へのキャストも,同じように少しデータを付け足して,調整しているイメ―ジである。

 今開いている「BP_FirstPersonCharacter」のイベントグラフは,キャラクターの視点移動処理も実装されている。ここで,マウス感度を調整する方法の1つを紹介しておこう。
 まず,イベントグラフを移動して,赤枠で示した「Camera Input」を探そう。

「BP_FirstPersonCharacter」の視点移動処理
画像集 No.280のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

 「EnhancedInputAction IA_Lookノード」は,マウスを動かすたびにトリガーされるイベントだ。マウスの入力のうち,横移動量を「Action Value Xピン」,縦移動量を「Action Value Yピン」で取得できる。

EnhancedInputAction IA_Lookノード
画像集 No.343のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう テンプレートに用意されている,マウスの入力を取得するノード

[Action Value Xピン]
・マウスの横移動量を取得できる

[Action Value Yピン]
・マウスの縦移動量を取得できる

 横移動量は「Add Controller Yaw Inputノード」の「Valピン」へ,縦移動量は「Add Controller Pitch Inputノード」の「Valピン」へそれぞれ接続されている。
 この「Valピン」に接続された値が「視点移動の量」である。

 ここで「Valピン」へ接続される値を0.1倍すれば,「視点移動の量」が本来の0.1倍,つまり,感度を10分の1にすることができる。

Add Controller Yaw Inputノード
画像集 No.346のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 操作しているキャラクターに縦回転(Yaw:ヨー)の入力を与えるノード

[Valピン]
・縦回転の量

[Targetピン]
・入力の対象とするキャラクター
・「self」の場合,このノードを配置した「ブループリント クラス」を対象とする
Add Controller Pitch Inputノード
画像集 No.345のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 操作しているキャラクターに横回転(Pitch:ピッチ)の入力を与えるノード

[Valピン]
・横回転の量

[Targetピン]
・入力の対象とするキャラクター
・「self」の場合,このノードを配置した「ブループリント クラス」を対象とする

 以下の画像では,「Action Value X」「Action Value Y」をそれぞれ0.4倍した例である。画像を参考に感度調整を行ってみてほしい。

視点移動のノードに入力される値を0.4倍した例。Action Value X(Y)からワイヤーを伸ばし,「*」を検索し「Multiplyノード」をそれぞれ配置する
画像集 No.281のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

Multiplyノード
画像集 No.344のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 掛け算を行うノード

[左側のデータピン]
・掛け算に使用する数値

[右側のデータピン]
・掛け算の結果


 「AddScoreイベント」を作成したが,このままでは動作しない。「的」を撃った時に動作するように,「的」のヒットイベントから「AddScoreイベント」を実行する処理を実装していこう。

実装イメージ:「AddScoreイベント」は自作した「カスタムイベント」のため,自動的にトリガーされる仕組みがない。そのため,どこからか処理を呼び出す必要がある。さて,「的」を作った際に,弾が当たったら「的」が落下する処理を実装したが,スコアを加算するのも同じタイミングで良いだろう。「的」の落下処理に続けて,プレイヤーに実装した「AddScoreイベント」を,「的」から呼び出していこう
画像集 No.161のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

グレイマン
画像集 No.351のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう このキャラクターは「グレイマン」という名前だ。UE4で,サンプルとして用意されていたキャラクターモデルである

UE5が正式リリースされてから2年以上経過している現在でも,よく見かける印象がある。意外と人気キャラなんだろうか
だんだん愛着が湧いて,かわいく見えてしまっているのは,筆者だけではないだろう

10-16:「BP_SimpleTarget」のイベントグラフを開く
画像集 No.162のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-17:「On Component Hit(Cube)ノード」に実装した処理の,末尾のノード付近に移動しよう。空いているスペースを右クリックして,「Get Player Characterノード」を追加する。画像では「Set Simulate Physicsノード」の後に実装していくが,エフェクトを実装した人は「Spawn Emitter at Locationノード」の後など,適宜読み替えてほしい
画像集 No.163のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-18:「Get Player Characterノード」の「Return Valueピン」からワイヤーを伸ばして,「Cast To BP_FirstPersonCharacter」を追加
画像集 No.164のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-19:図のようにできたらOKだ。これで,「BP_FirstPersonCharacter」に実装した「AddScoreイベント」に,アクセスするための前準備が整った
画像集 No.165のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

Get Player Characterノード
画像集 No.318のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう プレイヤーが操作している「キャラクター」を取得するノード

[Return Valueピン]
・取得したキャラクターのデータ

[Player Indexピン]
・どのプレイヤーを対象とするか
・1人目のプレイヤーは「0」,2人目のプレイヤーは「1」という風に指定する
・今回は「0」から変更しない
Cast To BP_FirstPersonCharacterノード
画像集 No.314のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 「Objectピン」に接続されたものが「BP_FirstPersonCharacterクラス」として扱えるか調べるノード

[As BP First Person Characterピン]
・「BP_FirstPersonCharacterクラス」として,実装されたものにアクセスできるデータピン


 「Cast To BP_FirstPersonCharacterノード」について,詳しく説明をしよう。再びクラスの概念についての説明になるため,内容をキチンと把握するのが難しい内容かもしれないが,できる限りかみ砕いて説明したつもりだ。

 まず前提として,Unreal Engineのすべてのオブジェクトは,「Objectクラス」というものをベースとして作られている。万物の根源は「Objectクラス」だったのだ。

ブループリント作成時,「すべてのクラス」を確認すると,どのクラスも「Objectクラス」から派生していることが分かる
画像集 No.309のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

 「Objectクラス」は万物なので,「的」「キャラクター」「銃」などすべてのオブジェクトを,ざっくり「Objectクラス」として取り扱うことができる。
 対象を「特定のクラス」ではなく「ざっくりとしたクラス」にすることで,「クラス」の違いに関係ない同じような処理を,いちいち固有の処理として実装する必要がなくなるのだ。

 一方,特定の「クラス」固有の処理を実行したい場合は,ざっくりとした認識ではなく,その「クラス」だと明確に認識しないといけない。

 「お客様の中に,お医者様はいませんか」が,いい例だ。航空機などで急患が出た際,客室乗務員が呼びかけているシチュエーションを想定しよう。
 一人ひとりに確認をして,もし手を上げてくれた人がいれば,その人への認識が「お客様」から「お医者様」に変化する。ここでやっと「患者を診る」という,「医者固有の処理」をしてもらえるようになるのだ。

 今回は,「Cast To BP_FirstPersonCharacterノード」を使うことで,キャラクターが「BP_FirstPersonCharacterクラス」であるかどうかを確認している。
 確認をしたことによって,「BP_FirstPersonCharacterクラス」に実装した,固有の処理である「AddScoreイベント」を実行できるようになるのだ。


10-20:「As BP First Person Characterピン」からワイヤーを伸ばし,「Add Score」を追加する
画像集 No.166のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-21:「AddScoreノード」が追加された。ノードをよく見ると「Target is BP First Person Character」と書かれているように,「BP_FirstPersonCharacter」で作成したカスタムイベントの「AddScore」を呼び出している
画像集 No.167のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-22:実装できたらプレイで確認だ。「的」を落とすたびに,左上にスコアが表示され,数値が1ずつ増えていくのを確認しよう(画像では,弾の速度やマテリアルを変更している。変更方法については,次章で説明する)
画像集 No.340のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

 「的」を落とした数をカウントできるようになった。
 ゲームのクリア条件は,レベル上の「的」をすべて落とすことなので,レベル上の「的」の総数を取得して,その数にスコアが達したら「Clear!」と表示する処理を実装しよう。

 処理は実行するタイミングも考慮しなければいけない。現実だと「いつ誰が確認するんだ」というイメージである。
 スコアがクリア条件を満たしているか「毎フレーム」確認する方法もあるが,今回は「的」を撃ちぬいて「スコアが加算されたタイミング」で判定をしてみよう。

 具体的に書くと,「AddScoreイベント」で「Score変数」を1加算した結果,レベル上の「的」の総数と同じかを判定し,もし同じなら「Clear!」と表示する流れである。

10-23:「BP_FirstPersonCharacter」のイベントグラフを開く。「AddScoreイベント」の「++」のあとに「Get All Actors Of Classノード」を追加しよう。なお「Scoreノード」と接続していた「Print Stringノード」は,「Score変数」の値が増えていくことを確認したので削除して大丈夫だ
画像集 No.169のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-24:「Get All Actors Of Classノード」が追加された。これは,「指定したクラスを持つオブジェクト」をすべて取得する,というノードである
画像集 No.170のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-25:このノードの「Actor Class」のプルダウンメニューから「BP_SimpleTarget」を指定する。これでレベル上の,すべての「的」の情報を取得できる
画像集 No.171のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-26:取得した「的」の個数を数えよう。「Get All Actors Of Classノード」の「Out Actorsピン」からワイヤーを伸ばし,「Length」を追加
画像集 No.172のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-27:「LENGTH」と書かれたノードが追加された。右側のピンに見覚えがあると思うが,黄緑色なので「Integer」,つまり整数である。この整数は「的」の総数を表し,「Score変数」の値と一致すると,「的」をすべて倒したことになる
画像集 No.173のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

Get All Actors Of Classノード
画像集 No.317のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 指定した「クラス」を持つ,オブジェクトの情報をすべて取得するノード

取得した情報は「Out Actorsピン」から取得できる
「Out Actorsピン」の形は1つの円ではなく四角の集合体となっているように,複数の「変数」の集合体となっている
Lengthノード
画像集 No.319のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう データの要素数(個数)を数えるノード

「Get All Actors Of Classノード」と組み合わせることで,特定の「クラス」を持つオブジェクトの総数を数えられる


10-28:「的の総数」と「スコア」が一致するか,判定する仕組みを作っていこう。変数リストから「Score」をイベントグラフに追加する。Ctrlキーを押しながらドラッグ&ドロップすれば,「Get Score」を選択する手順を省略できる
画像集 No.174のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-29:「Lengthノード」からワイヤーを伸ばし,「==」を検索する。「Equal」が表示されるので選択する。これは,2値が同じかどうかを判定するノードだ
画像集 No.175のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-30:画像を参考にしながら,「Equalノード」に「Scoreノード」も接続する
画像集 No.176のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-31:「Equalノード」の赤色のピンからワイヤーを伸ばし,「Branchノード」を追加する。なお,赤色のピンはTrue/Falseのどちらかを持つ「型」であり,「Equalノード」で2値を比較した結果,同じなら「True」,異なる場合は「False」になる
画像集 No.177のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-32:「Branchノード」が追加された。右側の実行ピンが2つあり,「True」「False」と書かれているように,「Conditionピン」に接続された値が「True」なら「True実行ピン」へ,「False」なら「False実行ピン」へ進む。今回の場合,「Score変数」の値が「的の総数」と同じなら「True実行ピンへ」,それ以外(クリア条件を満たしていない状態)なら「False実行ピン」へ進む
画像集 No.178のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

Equalノード
画像集 No.316のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 2値の値が一致するか判定するノード

左側のデータピンに,それぞれ接続した値が同じなら,右のデータピンは「True」に,それ以外なら「False」になる
Branchノード
画像集 No.313のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう 「Conditionピン」に接続された値を元に,処理を分岐させるノード

「Condition」に「True」が設定されると,「True」と書かれた実行ピンに進む
同様に,「False」が設定されると,「False」と書かれた実行ピンに進む


10-33:「True実行ピン」にはクリア条件を満たした場合に進むので,ここにゲームクリアの処理を実装していく。まずは,クリアが分かるように「Print Stringノード」を追加し,「Clear!」という文字を表示してみよう
画像集 No.179のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

10-34:フィールド上の「的」をすべて落としたら,「Clear!」と左上に表示される
画像集 No.180のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

 これで「的」を落とした数をカウントしていき,レベル上の「的」をすべて落としたら「Clear!」と表示されるというゲームルールが完成した。
 次章からは,UIや演出を追加してさらにゲームっぽくしていこう。

 本章の内容をすべて行った例を以下に示す。

・BP_SimpleTarget
 - プレイヤーが操作しているキャラクターを情報を取得
 - 取得した情報を判定し,BP_FirstPersonCharacterならAddScoreイベントを呼び出す


BP_SimpleTarget
画像集 No.385のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう


・BP_FirstPersonCharacter
 - 感度調整
 - Score変数の設定
 - Score変数の加算
 - レベル上のBP_SimpleTarget(的)の総数取得
 - スコアがBP_SimpleTargetの総数に達したか判定


BP_FirstPersonCharacter
画像集 No.383のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう
画像集 No.384のサムネイル画像 / 【完全ガイド】制作経験ゼロの社会人向けゲーム制作入門。夏休みを使って,Unreal EngineのFPSミニゲームを完成させてみよう

  • 関連タイトル:

    Unreal Engine

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月30日〜12月01日