Unreal Engineトップへ戻る

目次

  1. 用語一覧
  2. 変数を使ってコインを貯蓄する
  3. サブルーチン
  4. 一歩進んだサブルーチン
  5. さまざまなサブルーチンを活用する

用語一覧

  • Boolean : オン(True)とオフ(False)のどちらかの値しか持てない。フラグ等に使われる。
  • 参照 : 変数の現在の値を参照する変数の使用法。(15枚以上集めるとイベント発生)
  • 代入 : 変数に新しい値を代入して記憶させる変数の使用法。(コインを10枚あげよう)
  • Bピン : 入力ピンや出力ピンが2つある際(演算ノード等)の下側にあるピンのこと。
  • サブルーチン : ゲーム中に何度も行われる処理を1箇所にまとめておいて、使うときにジャンプしてそこにいけばよいという仕組み。メインルーチンから飛んで戻ってくるのでサブルーチン。
  • キャスト : オーバーラップイベントで取得したアクタは固有の変数や、関数にアクセスできない(人だということはわかるがどこの国の人かはわからない状態)。固有の要素にアクセスするにはアクタをキャストしなければいけない(あなたは日本人ですね?という質問を投げかける)。キャストに成功すると、アクタは固有のアクタにコンバートされる(はいという返事が返ってくるとその人は日本人として特定される)。
  • 関数グラフ : 関数を作成した際に自動的に作成されるグラフタブのこと。
  • Pure関数 : 何回やっても結果は同じなので、実行ピンが無い。ゲームで用いられる大抵の関数は結果が変わってくるので、不純関数と呼ばれる。
  • ブループリント関数ライブラリ : 共有の関数カタログのようなもの。そこに関数を作る事も可能。
  • ブループリントマクロライブラリ : マクロはイベントグラフ、関数にならぶ第3のサブルーチン。それを関数ライブラリのように共有するもの。

変数を使ってコインを貯蓄する

はじめての変数

  1. コンテンツブラウザ内[コンテンツ > Blueprints]フォルダの[PNPlayerPawn]をダブルクリックしてブループリントエディタを開く。
  2. マイブループリントパネルの変数グループの右側にある+マークにカーソルを重ね、現れたボタンをクリックして、新しい変数を追加。
  3. 変数に名前をつける。ここでは「NumOfCoins」とする。
  4. 変数の詳細パネル中の[ツールヒント]に変数の説明を書きとめておけるので「集めたコインの数」と入力。
  5. もう1つ変数を追加し、「HasScroll」と名づけ、[ツールヒント]に「巻物を取ったかどうか」と記入。

変数の種類

  1. マイブループリントパネルで[変数 > NumOfCoins]を選択し、詳細パネルで[変数の種類]を[整数(Integer)]に設定。
  2. マイブループリントパネルで[変数 > HasScroll]を選択し、[変数の種類]を[Boolean]に設定。

参照と代入

[C]キーを押したときにコインが1枚増える機能を実装する。

  1. [PNPlayerPawn]のブループリントエディタの[EventGraph]タブ内に[入力 > キーイベント > C]ノードを設置。
  2. マイブループリントパネルから[変数 > NumOfCoins]をグラフ上にD&D。
  3. 変数をドロップするとサブメニューが開き、変数の値を取得するノード(GET)を置くのか、変数に新たな値を設定するノード(SET)を置くのか選択できるので[取得]を選択。
  4. [NumOfCoins]の取得ピンからワイヤ-を伸ばして[Math > Integer > Integer+Integer]ノードを設置し、Bピンに定数[1]を入力。
  5. マイブループリントパネルから[変数 > NumOfCoins]をD&Dし、SETノードを設置。
  6. [C]ノードの[Pressed]実行ピンと[SET]の実行ピン、[Integer+Integer]の出力ピンを[SET]のNumOfCoinsピンにつなぐ。
  7. デバッグ文字を出す。[SET]ノードの実行ピンからワイヤーを伸ばして[Utilities > String > Print String]ノードを設置し、[SET]ノードの出力ピンを[Print String]ノードの[InString]ピンにつなぐ。 ※型の変換は自動でしてくれる。
  8. コンパイルし、レベルエディタでテスト。

変数を「プライベート」情報にする

  1. [PNPlayerPawn]のブループリントエディタのマイブループリントパネルで、[変数 > NumOfCoins]を選択し、プライベートにチェックを入れる。
  2. コンパイルすると、この値は外から参照や代入ができなくなる。

変数に昇格―ステータスを変数化する

ブループリントエディタには定数ピンを変数ピンに昇格する機能があるので、スプリント機能を例にやってみる。

  1. [PNPlayerPawn]のブループリントエディタのマイブループリントパネルで、[グラフ > EventGraph > InputActionSprint]をダブルクリックしてノードネットワークにジャンプ。
  2. 上の[SET]ノードの[Max Walk Speed]入力ピンから左へワイヤーを伸ばし、[変数へ昇格]を選択。
  3. 新しい変数[NewVar]が自動作成されるので、名前を[GroundSprintSpeed]とする。
  4. [GroundSprintSpeed]変数を選択し、詳細パネルで[ツールヒント]に「スプリントのスピード」と入力し、[カテゴリ]に「Chara Spec」と入力。
  5. 下の[SET]ノードも同様に変数へ昇格させて、「GroundWalkSpeed」と名づけ、[ツールヒント]に「通常字のスピード」と入力、[カテゴリ]を「Chara Spec」とする。
  6. 1度コンパイルして、[GroundSprintSpeed]変数を選択、詳細パネルのデフォルト値が「200」になっていることを確認。「GroundWalkSpeed」変数についても同様に「150」になっていることを確認。
  7. コンポーネントパネルからCharacterMovementをD&Dし、出力ピンからワイヤーを伸ばして[SetMaxWalkSpeed]ノードを選択。「GroundWalkSpeed」の[GET]ノードをD&Dし、[SET]ノードの[MaxWalkSeppd]ピンにつなぐ。[Begin Play]ノードの実行ピンを[SET]ノードの実行ピンとつなぐ。
  8. コンパイルして、テストプレイ。 ※スプリントは左Shiftキー

サブルーチン

はじめての関数

  1. [PNPlayerPawn]のブループリントエディタのマイブループリントパネルの関数グループの右側にある+マークにカーソルを重ね、現れたボタンをクリックして、新しい関数を追加。
  2. 関数に名前をつける。今回は「AddCoin」とする。
  3. [EventGraph]タブの[C]イベントノードから先の一連のネットワークを範囲選択し、Ctrl+Xでクリップボードにカット。
  4. [AddCoin]タブに戻ってCtrl+Vでペーストし、[AddCoin]の実行出力ピンと[SET]ノードの実行入力ピンをつなぐ。
  5. コンパイル。

はじめてのキャスト

  1. レベルエディタに戻り、[コンテンツ > Maps > Test]フォルダの[Test_Trigger]マップを開く。
  2. コンテンツブラウザで[コンテンツ > Blueprints]フォルダの[PNPickupCoinActor]をダブルクリックしてブループリントエディタを開き、[EventGraph]タブに切り替える。
  3. マイブループリントパネルの[グラフ > OnComponentBeginOverlap]をダブルクリックし、ノードの位置にジャンプ。
  4. [ActorHasTag]ノードと[ブランチ]ノードを削除する。
  5. ためしに[OnComponentBeginOverlap]ノードの[OtherActor]出力ピンからワイヤーを伸ばし、[AddCoin]を検索。該当のアクションは無い。キャスト前は、[Actor]なら共通で使える汎用アクションは使えるが、[PNPlayerPawn]特有の関数である[AddCoin]を呼び出すことはできない。
  6. [Other Actor]出力ピンからワイヤーを伸ばし、[ユーティリティ > キャスティング > PNPlayerPawnへキャストする]を選択。
  7. [AsPNPlayerPawn]出力ピンからワイヤーを伸ばし、[関数呼び出し > AddCoin]を選択。
  8. 設置された[AddCoin]ノードを元からあった[DestroyActor]ノードと接続し、コンパイル。

一歩進んだサブルーチン

入力ピンを活用する

  1. [PNPlayerPawn]のブループリントエディタに戻り、マイブループリントパネルで[関数 > AddCoin]を選択し、詳細パネルで入力(インプット)カテゴリの新規ボタンをクリック。
  2. 新しい行は左から、入力ピンの名前、入力ピンの種類をあらわしているので、「Num」を入力し、整数を選択する。
  3. コンパイルし、[PNPickupCoinActor]のブループリントに切り替えて、[AddCoin]ノードを確認。入力ピン「Num」が追加されているので、定数1を入力。
  4. [AddCoin]ノードをダブルクリックすると自動的に[PNPlayerPawn]のブループリントエディタに戻り、[AddCoin]関数が開く。
  5. 呼び出し側では入力ピンが追加されていたが、[AddCoin]の関数グラフから見ると出力ピンが追加されている。[Num]入力ピンに入力された値がここから出力されるので、[AddCoin]ノードの[Num]出力ピンを足し算ノードのBピンにつなぐ。
  6. コンパイル。

よく使うノードを「お気に入り」に登録する

  1. [コンテンツ > Maps > Test]フォルダにある[Test_Player_Death]マップを開く。
  2. レベルブループリントを開いて、グラフの空きスペースを右クリックし、[入力 > キーイベント > C]ノードを設置。
  3. メニューバーの[ウィンドウ > パレット]と操作して、エディタにパレットを追加。
  4. [GetPlayerPawn]はデフォルトでお気に入りに入っている。パレットパネルから[GetPlayerPawn]をグラフ上にD&D。
  5. [GetPlayerPawn]の出力ピンからワイヤーを伸ばし、[ユーティリティ > キャスティング > PNPlayerPawnへキャストする]をリストに表示して、このアクションの左側にカーソルを運ぶ。
  6. 星型のアイコンが浮かび上がってくるので、それをクリックでお気に入り完了。
  7. パレットパネルから[PNPlayerPawnへキャストする]をグラフにD&Dし、ワイヤーを接続していく。[C]ノードの[Pressd]ピンをキャストノードの実行入力ピンに、[GetPlayerPawn]ノードの出力ピンをキャストノードの[Object]ピンにつなぐ。
  8. キャストノードの[AsPNPlayerPawn]出力ピンからワイヤーを伸ばして、[関数呼び出し > AddCoin]を選択し[Num]入力ピンに「5」を入力。
  9. コンパイル。
  10. 「C」キーを押すたびにコインが5枚増えていけば成功。
  11. デバッグ表示を消しておく。[PNPlayerPawn]ブループリントに切り替えて、[AddCoin]の関数グラフを開く。
  12. [PrintString]ノードとそれに付随している変換ノードを削除し、コンパイル。

出力ピンを活用する

  1. [PNPlayerPawn]のブループリントエディタのマイブループリントパネルより、新しい関数を追加し、「GetNumOfCoins」と名づける。
  2. 詳細パネルにて、入力値の際と同じ要領で出力値を追加し、「ReturnValue」と名づけ、出力ピンの種類に整数を指定。
  3. 関数グラフに[NumOfCoins]の[GET]ノードを追加し、出力ピンを[ReturnNode]の[ReturnValue]入力ピンに接続。
  4. コンパイル。

タイマーの活用

  1. レベルブループリントを開き、空きスペースで右クリックして、「DisplayNumOfCoins」を作成。
  2. パレットパネルから[GetPlayerPawn]と[PNPlayerPawnへキャストする]のノードをグラフ上にD&Dし、[DisplayNumOfCoins]実行出力ピンと[PNPlayerPawnへキャストする]実行入力ピンを、[GetPlayerPawn]の出力ピンと[PNPlayerPawnへキャストする]の入力ピンをワイヤーでつなぐ。
  3. キャストノードの[AsPNPlayerPawn]出力ピンからワイヤーを伸ばして、[関数呼び出し > GetNumOfCoins]ノードを選択する。
  4. [GetNumOfCoins]ノードにさらに[PrintString]ノードを追加して、出力ピン2つをつなぐ。
  5. [BeginPlay]ノードを探して実行出力ピンからワイヤーを伸ばし、[Utility > Timer > SetTimerbyFunctionName]を選択。
  6. 設置された[SetTimerbyFunctionName]ノードの[FunctionName]入力ピンに「DisplayNumOfCoins」と入力し、[Time]入力ピンに「0.5」を指定し、[Looping]ピンにチェックを入れる。
  7. コンパイル。

戻り値とPure関数

  1. [PNPlayerPawn]のブループリントエディタのマイブループリントパネルで、[関数 > GetNumOfCoins]を選択し、詳細パネルで[グラフ > Pure(純粋)]にチェックを入れる。
  2. コンパイル。
  3. [Test_Player_Death]のレベルブループリントに切り替えると、[GetNumOfCoins]から実行ピンが消えている。
  4. キャストノードも純粋ノード化が可能。キャストノードを右クリックして[純粋キャストに変換]を選択。
  5. 切れた実行ピンをつなぎなおしてコンパイル。

はじめての条件式

  1. [PNPlayerPawn]のブループリントエディタに戻り、マイブループリントパネルで新しい関数を追加し、「DropCoin」と名づける。
  2. [NumOfCoins]の現在の枚数を調べるためにマイブループリントパネルの[変数 > NumOfCoins]をCtrlキーを押しながら関数グラフにD&D。
  3. [NumOfCoins]ノードの出力ピンからワイヤーを伸ばして[Math > Integer > Integer>=Integer]を選択。
  4. 設置されたノードのBピンに「1」を入力。
  5. Bキーを押しながらクリックしてブランチノードを設置。[DropCoin]と[Integer>=Integer]の出力ピンをブランチノードの入力ピンにつなぐ。
  6. [NumOfCoins]の[GET]ノードをもう1つと、[NumOfCoins]の[SET]ノード、[Integer-Integer]ノードの3つを設置。
  7. [NumOfCoins]の[GET]ノードの出力ピンを[Integer-Integer]ノードの入力ピンに、[Integer-Integer]ノードの出力ピンと[SET]ノードの入力ピン、ブランチノードの実行出力ピンと、[SET]ノードの実行入力ピンをつなぎ、コンパイル。

関数とイベントを使い分ける

  1. [コンテンツ > Blueprints]フォルダの[PNPickupScrollActor]をマップ上に1つD&D。
  2. [PNPlayerPawn]のブループリントエディタに戻り、[EventGraph]タブをクリックしてイベントグラフに切り替える。
  3. 新しいカスタムイベント「ObtainScroll」を作成。
  4. [ObtainScroll]の実行出力ピンからワイヤーを伸ばし、[DisableMovement]を設置し、[HasScroll]をオンにする。
  5. [HasScroll]の[SET]ノードを設置し、[DisableMovement]の実行出力ピンと[SET]ノードの実行入力ピンをつなぐ。
  6. [SET]ノードの実行出力ピンからワイヤーを伸ばし、[Delay]ノードを設置し、[Duration]を5に設定。
  7. [Delay]ノードの[Completed]出力ピンからワイヤーを伸ばし、[PrintSpring]を設置し、[InString]に「Goal!」と入力しコンパイル。
  8. レベルエディタに戻り、[コンテンツ > Blueprints]フォルダの[PNPickupScrollActor]をダブルクリックしてブループリントエディタを開く。
  9. [ActorHasTag]ノードと[ブランチ]ノードを削除する。
  10. キャンパスパネルから[PNPlayerPawnへキャストする]を設置し、[OnComponentBeginOverlap]ノードの実行出力ピンと[OtherActor]出力ピンをつなぐ。
  11. [AsPNPlayerPawn]出力ピンからワイヤーを伸ばし、[ObtainScroll]を設置し、キャストノードからの実行出力ピンもつなぐ。
  12. 設置された[ObtainScroll]ノードを元からあった[DestroyActor]ノードと接続し、コンパイル。

さまざまなサブルーチンを活用する

ブループリント関数ライブラリ

  1. レベルエディタに戻り、[コンテンツ > Blueprints]フォルダを選択した状態で新規追加ボタンを押し、[ブループリント > ブループリント関数ライブラリ]と操作して、「PNFuncLibrary」と名づける。
  2. [PNFuncLibrary]をダブルクリックしてブループリントエディタを開く。
  3. 左上のマイブループリントパネルに自動的に関数が1つ追加されるので「FlattenVector」と名づける。
  4. 詳細パネルで[グラフ > Pure(純粋)]にチェックを入れ、[カテゴリ]に「Math」と入力し、新しく入力ピンを「In」と名づけて作成し、新しく出力ピンを「ReturnValue」と名づけて作成し、両方の分類を[Vector]とする。
  5. 関数の開始ノードである[FlattenVector]ノードの[In]出力ピンからワイヤーを伸ばして[BreakVector]を選択し、ベクトルの中身を3つのFloat値に分解する。
  6. [BreakVector]ノードのすぐ右で右クリックし、[Math > Vector > MakeVector]ノードを設置し、[BreakVector]ノードの[X][Y]ピンのみ接続。
  7. [MakeVector]ノードの出力ピンを[ReturnNode]につなげてコンパイル。
  8. 新しい関数を追加し、「FlattenDirection」と名づけ、手順4と同様にカテゴリとPure(純粋)を設定し、入出力ピンを1つづつ追加。
  9. [FlattenDirection]ノードの[In]出力ピンからワイヤーを伸ばし、[Math > FlattenVector]を設置。
  10. [FlattenVector]ノードの[ReturnValue]出力ピンからワイヤーを伸ばし、[Normalize]を設置し、[Normalize]出力ピンを[ReturnNode]の[ReturnValue]入力ピンにつなぐ。
  11. コンパイル。

プレイヤーの移動を改善する

  1. [PNPlayerPawn]のブループリントエディタに切り替え、[EventGraph]タブをクリック。
  2. マイブループリントパネルで[グラフ > EventGraph > InputAxisMoveForward]をダブルクリックして該当ノードにジャンプ。近くにある[GetForwardVector]ノードと[AddMovementInput]ノード間のワイヤーを切断。
  3. 改めて[GetForwardVector]ノードの出力ピンからワイヤーを伸ばし、[Math > FlattenDirection]を選択して設置し、[FlattenDirection]の出力ピンを[AddMovementInput]ノードの[WorldDirection]入力ピンを接続。
  4. [GetRightVector]ノードも同様に[FlattenVector]ノードを噛ます形で[AddMovementInput]につなぎ、コンパイル。

ブループリントマイクロライブラリ

  1. コンテンツブラウザで[コンテンツ > Blueprints]フォルダを選択した状態で、新規追加ボタンをクリックし、[ブループリント > ブループリントマイクロライブラリ]と操作。
  2. [親クラスの作成]ダイアログが開くので、[Actor]を選択。これにより、今から作るマクロは[Actor]系譜のブループリント上でのみ使用できる。
  3. 作成されたアセットに「PNActorMacroLibrary」と名づけ、ダブルクリックしてブループリントエディタを開く。
  4. 作成後のマクロライブラリもデフォルトで1つマクロを持っているのでこれを「GetFlatSpeed」に変更。
  5. 詳細パネルでカテゴリに「Transformation」と入力し、出力ピンを1つ追加して「Speed」と名づけ、ピンタイプを[Float]に変更。
  6. グラフ上の空きスペースを右クリックして、[Utilities > Transformation > GetVelocity]を選択し、そのノードの出力ピンからワイヤーを伸ばすと[Math > FlattenVector]を選択。
  7. [FlattenVector]の出力ピンからワイヤーを伸ばし、[VectorLengh]を設置し、その出力ピンと出力(アウトプット)ノードの入力ピンをつなぐ。
  8. コンパイル。

スプリントのリスクを完成させる

  1. [PNPlayerPawn]のブループリントエディタに切り替え、マイブループリントパネルで新しい関数を追加。名前は「CheckSprintRisk」。
  2. [GetFlatSpeed][GroundSprintSpeed(GET)][ブランチノード]を設置し、[GetFlatSpeed]ノードの出力ピンからワイヤーを伸ばし、[float>=float]を設置。[GroundSprintSpeed]の出力ノードを[float>=float]のBピンにつなぐ。
  3. [CheckSprintRisk]の出力実行ピンと[float>=float]出力ピンからワイヤーを伸ばし、ブランチノードにつなぐ。
  4. ブランチノードの[True(真)]実行出力ピンからワイヤーを伸ばし、[DropCoin]を設置。
  5. マイブループリントパネルから[グラフ > EventGraph > BeginPlay]をダブルクリックして該当ノードの場所へジャンプ。
  6. 終点の[SET]ノードの続きに[SetTimerbyFunctionName]ノードを設置し、[FunctionName]入力ピンに「CheckSprintRisk」と入力し、[Time]ピンに「0.5」を設定、[Looping]にチェックを入れる。
  7. コンパイルゥ。

Unreal Engineトップへ戻る


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-09 (木) 19:23:18 (858d)