ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】⑤モノ(アクタ)を動かしてみよう

目次

 

はじめに

注意

UE5Preview1の現在の情報です。

今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。

今回はブループリントを作成してモノを動かしてみたいと思います。

解説

①動かすモノを作ろう

前回の記事を参考にプロジェクトを開きましょう。

 

レイアウトの保存の解説時に追加した

アクタを配置というウィンドウを開きます。

f:id:namiton:20220302181142p:plain

Unityなどのゲームエンジンではゲーム上のあるモノのことをオブジェクトと呼びますがアンリアルエンジンではアクタと呼びます。

試しに形状>キューブを選びをマップ上にドラッグアンドドロップしてみましょう。

f:id:namiton:20220302182156p:plain

右上のアウトライナーにCubeが追加されています。

アウトライナーはレベル(マップ)上のアクタの一覧を表示してます。

詳細ウィンドウには選択されたモノの位置や回転コリジョンなどが表示されます。

詳細ウィンドウは選択されたアクタの情報を表示します。

f:id:namiton:20220302182307p:plain

作成されたCubeをアウトライナーから選択されている状態でF2を押してみましょう。

名前の変更ができるはずです。TargetCubeと名前を変更します。

f:id:namiton:20220302182511p:plain

 

②用語解説とレベルブループリント

<用語の説明>

まずレベルとは何か解説します。

 

ざっくりいうとレベルとはUnityでいうシーンであり、

大量のアクタを所有する大きな塊です。

 

ゲームを起動したときにどのステージを遊ぶか決めますよね?

そのときにステージに応じたレベルが読み込まれるということです。

レベルとはUnityでいうシーンのことでありマップのことである。

 

次にブループリントとは何か説明すると。

 

公式ページより

Unreal Engine の ブループリント ビジュアル スクリプティング システムは、ノードベースのインターフェースを使用して Unreal Editor 内からゲームプレイ要素を作成するゲームプレイ スクリプティング システムです。一般的な多くのスクリプト処理言語と同様に、このシステムは、Engine でオブジェクト指向 (OO) のクラスやオブジェクトを定義するために使用します。UE4 を使う場合、ブループリントを使用して定義したオブジェクトは通常、単純に「ブループリント」と呼びます。

。。。

 

ざっくりいうとプログラム言語をとか知らなくてもノードを繋げるだけでゲームのロジックがかけるよってことです。

 

ブループリントとはノードを繋げるだけでロジックが書けるアンリアルエンジンで使えるツール

 

以上のことから、レベルブループリントとは

言葉の通りレベル(シーン)に用意されているブループリント(ロジックを書く)ところということです。

 

<レベルブループリントを開いてみよう>

画面左上のアイコンからレベルブループリントを開くという項目があります。

押してみましょう

f:id:namiton:20220302184233p:plain

開くとこんな感じのウィンドウが開きます。

f:id:namiton:20220302184400p:plain

 

③アクタを開始時にワープさせる

 

レベルブループリントからはレベル上のアクタの情報を取得して変更することができます。

実際にやってみたほうが分かりやすいと思うので上のレベルブループリントタブをドラッグしてアウトライナーが見えるようにします。

f:id:namiton:20220302184630p:plain

TargetCubeアウトライナーから選択してレベルブループリントイベントグラフドラッグアンドドロップしてみましょう。

するとノードが作成されます。

f:id:namiton:20220302184741p:plain

作成されたノードのピン(右側のまるいヤツ)からマウスをクリックしながら横に伸ばして何もないところで離します。

すると画面のように検索窓が出てきます。

試しにSetActorLocationと検索してみましょう。

SetActorLocationはワールド座標でアクタの位置をNewLocationの位置に移動させる

f:id:namiton:20220302184919p:plain

該当のノードをクリックします。

f:id:namiton:20220302185036p:plain

こんな感じにつながればOKです。

f:id:namiton:20220302185127p:plain

次にイベントBeginPlayを出してみましょう。

何もないところで右クリックして、、

検索します。

f:id:namiton:20220302185235p:plain

イベントノードは赤く表示されます。

このノードはゲームがはじまった瞬間に

一度だけ呼ばれます。

 

BeginPlayは始まって一度だけ呼ばれる

 

f:id:namiton:20220302185314p:plain

ピンを繋げてLocationの値を画像のように変更します。

f:id:namiton:20220302203704p:plain

また、アクターを移動されるには可動性をムーバブルにします。

f:id:namiton:20220302203743p:plain

実行してみましょう。

f:id:namiton:20220301123616p:plain

TagetCubeの位置がNewLocationで指定した位置にワープします。

f:id:namiton:20220302203836p:plain

 

④アクタを少しづつ動かしてみよう

 

レベルブループリントに戻って検索窓にTickと検索してつなぎなおします。

 

ノードを外すときはピンの上でAlt+クリックです。

f:id:namiton:20220302204637p:plain

イベントTickは毎フレーム呼ばれます。

例えば一秒間に60回画像が切り替わる場合は毎秒60回呼ばれます。

画像のように

TargetCubeからGetActorLocationで位置を取得してワールド座標Zに1を足し算したものをNewLocationに接続します。

f:id:namiton:20220302204944p:plain

GetActorLocationはアクターの位置をワールド座標で取得します。

実行すると毎フレームZ方向に1づつ上昇するはずです。

f:id:namiton:20220302205037p:plain

ココの足し算する値を変更すると速さや方向を変更できます。

いろいろな値を入れて動作が異なることを確認してみましょう。

f:id:namiton:20220302205209p:plain

 

最後に

 

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。