今から始めるUE4極め本⑤ 〜ブループリント入門編〜

UE4極め本
動作確認済みバージョン
UE4.25.1

はじめに

UE4の目玉機能であるブループリント編です!ブループリントの優位性や実装方法については本書できっちり解説されていますので、この記事では全体のイメージが見えることに重きを置いて、マリオのゲームを例に補足していきます。

わんちゃん
UE4のブループリントはパズルのように実装を組み立てられるので、C++やC#に挫折した人でも安心して始められますよ!

第9章 ブループリント入門以前

第9章は短い読み物形式になっています。内容としてはブループリントの優位性について、ゲーム開発現場のあるある事例を元に解説されています。早く作業に取りかかりたい人は本章は飛ばしても問題ありません。

最後のNote(コラム)に書かれている、「レベルブループリント」と「クラスブループリント」という2つの種類については最初のうちは混同してしまうかもしれません。

マリオに当てはめてみると、レベルブループリントは穴に落ちたときの失敗や、強制スクロールステージの管理、ゴールゲートを超えてステージクリアというような、ステージに紐付くイベントを管理している管理人のイメージです。

クラスブループリントは、マリオやクリボーなどのキャラクター(アクター)の数だけ存在し、それらの動きやイベントを管理している演者のようなイメージです。

また、後に「ゲームモード」というブループリントも登場します。これはゲームのルールを管理するもので、スコアやタイムはゲームモードで管理するのが良さそうです。

これはあくまで役割分担の例であり、この通りに作らないといけないわけではありません。

第10章 基本的なブループリントを作成する

初めてブループリントを操作するので、本書の文や図を見ながら操作を間違えないように気をつけてください。

どこから実行ピンを引っ張り出すかを間違えると必要なノードが見つけられなかったり、繋ぐはずのピンを繋ぎ忘れているとうまく動かないことがあります。

10.1.2 日本語キーボードでコンソールコマンドを呼び出せるように設定する

最新版のUE4ではこの項目は既に設定済みです!「@キー」でコンソールコマンドの入力欄が呼び出せるはずです。

キーを押しても入力欄が表示されない時は、マウスカーソルが表示されているようでしたら実行中のゲームウィンドウがアクティブになっていないかもしれません、実行中のゲームウィンドウの中をクリックしてアクティブにしてから[@キー]を押してみてください。

最新版と異なる箇所
P.161
もし[プロジェクト設定]から設定を変更する場合は、本書の画像の位置とは場所が変わっていますのでご注意ください。

10.3.1 現在のゲームモードを確認する

表記が異なる箇所
P.160
旧)メニューバーから [ウィンドウ] > [ワールド設定] を選択します。
新)メニューバーから [ウィンドウ] > [ワールドセッティング] を選択します。

10.3.2 独自のゲームモードを作成する

最新版と異なる箇所
P.161
旧)[親クラスの選択]ダイアログで、[ゲームモード(Game Mode)]と書かれたボタンをクリックします。
新)[親クラスの選択]ダイアログで、[ゲームモードベース(Game Mode Base)]と書かれたボタンをクリックします。

第11章 アクタの動かし方

11.2.1 「ハローワールド」

本書を見ながらブループリントを作成する際に注意していただきたいのが、本書で指定する名称が、最新版だと英語表記になっていたり、日本語表記になっていたりするため、見つけにくくなっているものがあります。

表記が異なる箇所
P.171
旧)リストから[Utilities]>[String]>[Print String] を選択します。
新)リストから[ユーティリティ]>[ストリング]>[Print String] を選択します。

手順.9の「レベルブループリントを表示した状態でシミュレート実行する」という手順では、赤いパルスが表示されないことがあります。

これは、実行時にこのレベルブループリントをデバッグ対象(監視の対象)にしていないためです。

下図のように、[プレイ]の右側にある[デバッグフィルター]をクリックすると、対象のレベルブループリントが選択できます。それを選択した状態で[プレイ]を実行すると、赤いパルスが表示されます。

なぜわざわざ指定する必要があるかというと、マップ上にそのブループリントを使用したアクターが複数いた場合、どのブループリントを監視するかを指定する必要があるためです。その場合は、[デバッグフィルター]をクリックすると、選択対象が複数表示されます。

尚、[Begin Play]ノードは実行時に一回しか実行されないため、赤いパルスも実行時に数秒間しか表示されません。処理は一回しか実行されないので表示も一瞬になるはずですが、それでは視認できないので、パルスは徐々に消えていくような演出になっています。

11.2.3 アクタの位置を取得する

手順.4 で、マップに手裏剣アクターを配置したあと、レベルブループリントで右クリックすると手裏剣アクターの参照を得ることができます。

ステージ管理人のレベルブループリントは、ステージに配置されているアクター達の情報を把握しており(参照を持っている)、直接操作することができます。

逆に、アクター同士は相手のアクターを直接操作することは(基本的に)できません。

コンテキスト・センシティブ
ブループリントで最初に躓きやすいのが、使いたいノードが見つからないというものです。
これは、ノードを一覧から探す際に、どのノードから引っ張ったかによって表示される項目が変わるためです。

11.3 初めてのクラスブループリント

先ほどのTest_Actor_Movementのマップでは、レベルブループリントで手裏剣を動かしました。これは、ステージ管理人が クリボーA を操り人形のように動かしているような実装です。

今回の Test_Player_Movement というマップは、ステージ管理人がクリボーのことを操作するブループリントは書かれていません。

このような実装では、ステージごとにレベルブループリントに同じことを書く必要が出てしまいます。そこでクリボー自体のクラスブループリントに動きを設定することで、操り人形のように動かすのでなく、クリボー自身が自立して動くようにしていきます。

11.3.1 マップ上のアクタをクラスブループリント化する

最新版と異なる箇所
P.179
[ブループリント/クラスを追加]ボタンを押した時のダイアログが変わっています。

ブループリント名に「PNShurikenActor」を入力。
パスは[Blueprints]フォルダを選択。
作成方法は[新しいサブクラス]を選択。
親クラスは[StaticMeshActor]を選択した状態で、右下の[選択]をクリックする。

11.4.1 プレイヤーキャラを前進させる

表記が異なる箇所
P.182
旧)アクションリストから[Pawn]>[Input]>[Add Movement Input] を選択します。
新)アクションリストから[ポーン]>[インプット]>[Add Movement Input] を選択します。

11.4.2 キャラクターの歩行性能を調整する

最新版と異なる箇所
P.184
旧)手順.3 [詳細]パネルの[Character Movement]>[Max Walk Speed]を「150」に設定し、同じ並びの[Max Acceleration]も「150」に設定します。
新)手順.3 [詳細]パネルの[キャラクタームーブメント: 歩行]>[Max Walk Speed]を「150」に設定し、[キャラクタームーブメント(基本セッティング)]>[Max Acceleration]を「150」に設定します。

第12章 入力を取ってキャラを動かす

12.2 入力マッピングを設定する

表記が異なる箇所
P.191
旧)ダイアログの左メニューから[入力]を選択します。
新)ダイアログの左メニューから[インプット]を選択します。

12.3.1 入力マッピングを使ってプレイヤーキャラを動かす

表記が異なる箇所
P.195
旧)[入力]>[軸イベント]>[MoveForwawrd]を選択して…
新)[インプット]>[Axis Events]>[MoveForwawrd]を選択して…
※後ほどMoveRight等のイベントを追加する際も同様に英語表記になっています。

[InputAxis MoveForward]を[Add Movement Input]に繋いだのに実行してもキャラクターが動かない場合は、以下を確認してみてください。

  • プレイモードが[シミュレート]になっていないかどうか
  • 実行後にゲームウィンドウをクリックしてアクティブにしたかどうか
  • [Add Movement Input]のWorld Direction が x:1.0,  y:0.0, z:0.0 になっているかどうか
  • [プロジェクト設定]の入力マッピングが正しく設定されているかどうか

12.4.2 コントローラを回してカメラを周回させる

マウスでカメラを回転するようにしたあと、もし回転の方向を逆にしたい場合、[Axis Value]の値に -1.0 をかけてやると逆にすることができます。掛け算は [float x float]の掛け算です。

12.4.3 カメラの向きで移動するように改良する

表記が異なる箇所
P.203
旧)[Utilities]>[Transformation]>[Get Forward Vector]を選択して…
新)[ユーティリティ]>[トランスフォーメーション]>[Get Forward Vector]を選択して…

まとめ

これでブループリント入門編は終了です!

C++やC#でスクリプトを書いていた頃は、文法の間違いでハマってしまったりして思わぬところで躓いてしまうこともありましたが、ブループリントではピンに繋いでいくだけで簡単にスクリプトを書くことができます。

また、レベルブループリント、クラスブループリント、ゲームモードといったUE4のお作法を理解することで、今後自分でゲームを作る時の設計にも役立つと思います!

わんちゃん
次回はキャラクターを動かす方法を学びます!

おねがい

学習の際にわかりにくいと感じたことや躓いてしまった箇所がありましたら是非教えてください!

あなたのノウハウを記事に反映することで、次に学習する方の手助けになります!記事のコメントやTwitter等でご連絡ください~!