当ブログでご紹介中商品掲載(Amazonリスト)

猫でも分かるUE4を使ったゲーム開発 超初級編#02~受講記録~

当ページのリンクには広告が含まれています。

前回解説した「猫でも分かるUE4を使ったゲーム開発」シリーズの#02初めての[BluePrint]編です

今回も序盤に「プロの質問お断り!」と大々的に警告がされています

前回#01ではインストールからレベルエディタの基本操作まででしたが、今回はBluePrintとは?~非常に簡単なゲーム制作(床から床へ移動するゲーム)までが範囲となっています

言わずもがなですが#01とセットで受講しましょう

初心者がいきなりブループリントから入っても、何が分からないのか分からず、UnrealEngineの操作が苦痛になります

ヨシコフ

#01と併せて受講すると、簡単なゲームが作れてしまう!

こちらのチュートリアルはヒストリア社提供の夏休みの宿題の4番手として紹介されています

本チュートリアルの事前準備

#01に引き続き
本チュートリアルのUEバージョン:UE4,25,4

目次

「猫でも分かる#02」で学ぶ事

議題は「ブループリントとは?」

  • ブループリントとは?
  • ブループリントエディタの説明
  • Mesh同士の親子付
  • ブループリントの設定をレベルエディタで追加変更
  • ブループリントの学習ポイント
  • ブループリントを使った簡単なゲーム3種
  • ブループリントのイベントグラフの整理術
  • ブループリントの時間表記

「猫でも分かる#02」メモ

ブループリントとは?

ビジュアルスクリプティングシステムの略

ブループリントのアイコン
ブループリントのアイコン
ブループリントで組んだノード
ブループリントで組んだノード

エンジニアがいなくてもプログラミングを作れるためにできた機能

従来のゲーム制作の工程ではエンジニアさんに負担がかかりすぎていたため、プログラミングの知識がないアーティストさんも扱える事を目的とした機能

ブループリントはAIではない
AI機能としてはビヘイビアツリー機能が存在する(今回はビヘイビアツリー機能については省略)

ブループリントエディタ

ビューポートに表示されているアクタ・メッシュの一覧が表示されている

ブループリントエディタ
ブループリントエディタ

コンポーネント

ビューポートに表示されているアクタ・メッシュに設定を追加する事ができる

コンポーネントパネル
コンポーネントパネル
CharactorMovementキャラの動きにまつわるもの全てを制御
動きの速度を決める
動きの速度を決める
CameraBoom大元は[SpringArm]
カメラワークの遅延を設定することが出来る
[CameraBoom]選択⇒[詳細]⇒
ラグ
[EnableCameraLag]✔
[CameraLagSpeed]1.0
[+コンポーネントを追加]Meshを追加できる[詳細]スタティックメッシュより変更可能

Mesh同士の親子付

ブループリントに表示されたアクタにMeshを追加する([+コンポーネントを追加]より)ことが出来る

Meshの親子付の方法
  1. [コンポーネントパネル]上で、追従させたい(子)のMeshを、追従元のMesh(親)の上にD&D

ただし、単に親子付しただけだと(特にサードパーソンに追加)、動きがズレてうまくリンクできない場合がある

https://twitter.com/yoshikovENGINE/status/1579490447181111296?s=20&t=ejR4zlL0Uieb_wbwJaa4Kw
親子付したMeshの動きズレ解決方法

コンポーネントパネルより

  1. 子のMesh選択⇒[詳細]親ソケットで親付させたい部位を設定(今回はhead)
  2. トランスフォーム値を右端[◂◂]アイコンでリセット

下記ツイッター投稿でムービーで説明しています

https://twitter.com/yoshikovENGINE/status/1579490478583873537?s=20&t=ejR4zlL0Uieb_wbwJaa4Kw

親子付の概念は様々な事に応用できる
ex)ヘッドライト・盾

ブループリントの設定をレベルエディタで追加変更

ブループリントを[詳細]パネルで設定

コンポーネントパネルはレベルエディタ上([詳細]パネル)で細かく設定ができる

↓下記コマンドで、ブループリントの設定を追加変更する形で、プレイイン中も[詳細]の数値を変更&プレビューできる

プレイイン⇒F8(インジェクト)⇒[詳細]PC&当該のコンポーネント選択⇒任意のパラメータ変更⇒コマンド[k]

ただしブループリントでは数値は変更されていない

ブループリントを[コンポーネント]パネルで設定

レベルエディタで編集した数値を複製したアクタに適用したい場合

[詳細]⇒+追加右隣アイコン[このアクタのブループリントを編集]⇒インスタンス変更をブループリントに適用

大元のブループリントを編集すると大元のブループリントのの値が優先され、レベルエディタ上の数値は無効になる

ブループリントの学習ポイント

1から自分で作るよりも、Epicが提供しているデータを参照&カスタマイズしていく事をおススメ

ブループリントの基本的な考え方
  • どんなタイミングで
  • どんな処理を
  • どんな順番で実行するか

小学生向けのプログラミングソフト「スクラッチ」と同じ考え方

ex)PCをJumpさせる

  1. ジャンプボタンが押されたらジャンプを実行する
  2. ジャンプボタンが離れたらジャンプが止まる

これらの動きをブループリントのノードで作成すると?

  1. インプットアクションJump⇒Jump(空きスペース右クリック⇒[Jump]検索するとヒット)
  2. インプットアクションJump⇒StopJump
  • グラフ右クリックで候補に挙がったメニューはどれを選択しても可能
  • ノードを切断(ピンをAlt+クリック)すると機能しなくなる(ジャンプしなくなる)
  • 切断されたノードをグラフに残したままでも影響なし

ブループリントを使った簡単なゲーム~準備~

STEP
新規レベルを作成

レベルはメニュー[ファイル]から作成する
コンテンツブラウザ⇒右クリックから作成したレベルは、テンプレートが選べず、真っ暗(まっさら)な状態で作成されてしまう

STEP
サードパーソン(PC)を表示させる

[アウトライナ]⇒[Player Start]選択(※床の上に配置)した状態でプレイインするとサードパーティが現れる

プレイインを押してもサードパーソンが表示されない場合
[ワールドセッティング]タブ⇒ゲームモードオーバーライド⇒[ThirdPersonGameMode]に設定

STEP
床を複製配置する

復習:床を複製配置するには?

ブループリントを使った簡単なゲーム①

ゲーム内容①

床と床の間に回転する板を配置する

STEP
床と床の間に配置する板用のブループリントを作成する

ブループリントを新規作成

コンテンツブラウザ[EGJ]⇒[+追加]ブループリント⇒親クラス[Actor]※今回の場合

コンテンツブラウザ[EGJ]⇒[+追加]ブループリント⇒親クラス[Actor]
コンテンツブラウザ[EGJ]⇒[+追加]ブループリント⇒親クラス[Actor]
ActorとPawnの違いとは?

・決定的な違いはAI機能を付与できるか
・pawnの方が使用可能なノードが多い

AI:Actor自体が何かを考え決定&実行する機能

今回は単純な回転する棒なので Actorで十分

ブループリントデータの命名規則

BPデータの命名規則 絶対的な決まりはないが、冒頭に何のデータかわかり、検索にもヒットしやすくなる命名規則を推奨

例:ブループリント BP_xxxxxxx スケルタルメッシュ SK_xxxxxxx

STEP
板用のブループリントからMeshを作成する
  • 作成したBPエディタをWクリックで開く
  • ビューポート上に板を作成⇒[+追加]キューブ
  • レベルエディタに戻って、BPデータをビューポートにD&D ※BPエディタをずらすと隠れていたレベルエディタが出てくる
STEP
板を回転させる ver①

回転方法はいくつかあるが今回は[イベントTick]ノードを使用

下記デフォルトで用意されているノード

ノード名効果
BiginPlayプレイイン開始直後のアクション
ActorBeginOverlapアクタとメッシュが重なったら何かが起こる
ex)PCがコインを取る
イベントTick常にアクションしている

[AddActorWorldRotation]ノードを作成⇒接続⇒ DeltaRotationの数値 (仮に)Z10

STEP
板を回転させる ver②

[GetActorRotation]&[SetActorRotation]をセットする

GetとSetの概念

Get:データを読む
Set:データを書く

[GetActorRotation]と[SetActorRotation]の間に[CombineRotators]ノードを設置⇒ [CombineRotators]ノードの回転数を調整

余談:床を回転する方法

床を選択⇒[詳細]⇒[+追加]⇒[RotatingMovement]選択
※トランスフォーム[ムーバブル]選択

設定後、[このアクタのブループリントを編集]でスクリプトを追加できる

ブループリントを使った簡単なゲーム②

ゲーム内容②

床と床の間を移動する板を配置する

作成前の準備
  • ゲーム①で作成した板のブループリントを複製&リネーム
  • ざっと床同士の空間のサイズを測る
    [詳細]トランスフォームY値より算出(今回1700-400=1300)
STEP
板をスタートから移動し続ける(往路)

複製したブループリントエディタを編集

[イベントTick]⇒[AddWorldOffset]ノード接続
※[DeltaLocation]に速度を入力

STEP
板の復路を作る(変数を作成)

プロパティ(変数)作成:[AddWorldOffset]ノードの [DeltaLocation]から[変数へ昇格]選択

上記作成した変数は[マイブループリント]パネルに作られる (わかりやすくリネーム(F2)しておく)
※今回は[speed]と命名

リネームする時は日本語や記号厳禁
変数名は半角英数字!
日本語や記号は誤作動の原因となる

変数の閉じ目のアイコンを👁をON&コンパイルすると、レベルエディタ上でプロパティ表示される

変数の閉じ目のアイコンを👁をON&コンパイルすると、レベルエディタ上でプロパティ表示される
STEP
板の復路を作る(板の現在地を取得)

[GetLocationActor]ノード作成

[GetLocationActor]ノード作成
STEP
板の復路を作る(XYZのどれかを読む設定)

今回はYを読む

[GetLocationActor]の出力ピン右クリック⇒構造体ピンを分割 ブランチノードを作成 ※ifでヒット

STEP
PrintStringでテスト[ある数値を超えたら成功・以下なら失敗]というスクリプトを作成

今回はYが1700を超えたら成功・以下なら失敗

  • [Float>Float]ノード設置※[>]検索でヒット
  • [PrintString]ノードに繋げて、正誤判定がデバック文字で分かるように設定

レベルエディタ[詳細]での編集とブループリントでの編集は、どちらが優先されるかは時と場合によるので、[PrintString]で都度試作しながら進める

入力した数値の単位は?

デフォルトはcm

エディタの環境設定で変更可能⇒レベルエディタ-ビューポート

STEP
板の復路を作る
  • ゴール地点についたら速度を[-]に設定
  • step2で作成したマイブループリント[speed]をグラフにD&D
  • [Set]で配置 [セット]Y-1入力 コンパイル&保存
STEP6時点のブループリント
STEP6時点のブループリント
https://twitter.com/yoshikovENGINE/status/1580949828757966849?s=20&t=F5BdOkiAU3Wi4hReQ8GNYw
距離でなく移動値を入力する方法
  1. スタート位置を新規でセットする
    ・イベントBeginPlay
    ・GetActorLocation
    ・変数へ昇格(分かりやすいようリネームする)
  2. 既存の[GetActorLocation]に①で作成した変数を接続
    ・変数は[GET]で配置
    ・ピン右クリック[構造体を分割]
  3. 変数と[>]の間に[+]ノード追加 ゴール位置-スタート位置の数値入力
    ※戻りのノードには変更なし
STEP
板が往復し続けるようにする
  • [GetActorLocation]~を複製し、ブランチの[False]から複製&接続
  • 今度は[<]ノードを使う
  • [<]に入力する数値はスタート位置
  • [セット]に入力する数値は整数
STEP7時点のブループリント
https://twitter.com/yoshikovENGINE/status/1580949853663731712?s=20&t=F5BdOkiAU3Wi4hReQ8GNYw

ブループリントを使った簡単なゲーム③

ゲーム内容

床と床の間を板が回転しながら移動する

STEP
ブループリントで作った往復する板をレベルエディタ上で追加編集(回転)する

往復する板(複製&リネーム)に、レベルエディタ[詳細]⇒[+追加]⇒[RotatingMovement]⇒トランスフォーム値の回転数値を調整

ブループリントのイベントグラフの整理術

UnrealEngineのデータの命名規則は原則英語。英語以外の言語はトラブルになる

英語だらけで分からなくなる…こういう時のために日本語で補足でコメントをつけることが出来る

補足コメント機能
補足コメント機能
補足コメント機能効果やり方
①ツールヒント変数にカーソルを合わせるとコメントが表示データ名選択⇒[詳細]
②コメントブループリントで組んだノードにコメントを表示ノード群をドラックで囲む+[C]
③ノードコメントノードにコメントを表示ブループリント左上💭クリック

ノードをつなげすぎて煩雑になりがちなブループリントを整理整頓する方法がある

BPノード選択⇒[Q]ノードを整列
[Sequence]ノード横に長くなりすぎて途中で切断したノードをつなぎ直す
[ノードを降りたたたむ]煩雑になったノードを選択&右クリック[ノードを降りたたたむ]でコンパクトに
更に畳んだノードにコメント補足するとあとから見やすいデータに

ブループリントの時間表記

Now現在の時間取得
GetMillisecond・秒数取得
・①②を[BeginPlay]に繋げて経過時間表記
Delay秒後に開始
イベント[Tick]DeltaSecondsTickを呼ぶ間隔
ヨシコフ

他にもいろいろあります

まとめ:受講し終えたら更に深堀したくなる UnrealEngineの機能は怖くない

ヒストリア社提供の夏休みの宿題①②を終えて、「猫でも分かる」チュートリアルが③です

急にボリューミーになりましたが、ヒストリア社提供の夏休みの宿題①②を終えたビギナーであれば興味をそそられる説明ばかりです

ヨシコフ

もっと深堀したくなる?

コツコツ進めて、ヒストリア社提供の夏休みの宿題すべて終えるころには、ムキムキのUnrealEngine使いになっていたいですね👍

ヨシコフ
unrealEngine初段
[慎重]×[最上思考]の資質を持つ
二児のワーママ(6y&3y)

「unrealEngineは自分の資質&育児中の働き方に合うかもしれない?」

こういう望みを持って夜な夜なレベルアップ中
イマココ→【目標0】書籍を通して基本操作とソフトの仕組みを覚える

レベルアップ仲間募集中です

スポンサーリンク

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次