ゲーム開発備忘録

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

【ゼロからアンリアルエンジン5】 ⑬プレイヤーを狙う大砲を作ろう=変数化と反応範囲マテリアルの作成=

目次

 

はじめに

注意

UE5Preview2の現在の情報です。

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

 

Preview2になりReal型が従来のfloatに戻りました。

バージョンアップ時に自動的に置き換わるので問題ないですが、

従来の記事ではfloatに置き換えて実装してください。

 

解説

①BP_Cannonの変数化

BP_Cannonを開きます。

分かりやすいように、前回作成したブループリントに各ノードごとの機能にコメントを付けつつ変数化していきます。

f:id:namiton:20220314145003p:plain

<範囲チェック>

砲塔が反応する距離の確認する場所です。

f:id:namiton:20220314145138p:plain

反応する最大距離と最小距離を変数化しておきましょう。

条件数値を変数に昇格して名前をMaxDistance・MinDistanceにそれぞれしましょう。

f:id:namiton:20220314145443p:plain

f:id:namiton:20220314145548p:plain



変数へ昇格する機能を使用するメリット

マイブループリントから型指定して変数をつくるのではなく

変数へ昇格するボタンから変数を作成すると、設定値がデフォルト値に反映されます。

既存の値がそのまま反映されるので、積極的に使っていきましょう。

f:id:namiton:20220314145755p:plain

 

<弾道予測生成>

予測線を生成する場所です。

f:id:namiton:20220314145938p:plain

ArcParamの値を変数化しましょう。
この値の0~1の範囲で弾道の山なり具合が変更できます。

f:id:namiton:20220314150110p:plain

また不正な値が入らないように制限もつけておきましょう。

詳細の値の範囲に入力するとその範囲内に値を抑えてくれます。

f:id:namiton:20220314150235p:plain

砲弾のサイズに合わせた着弾判定をしたいので

Projectile Radiusも変数化しましょう。

f:id:namiton:20220314150408p:plain

 

<砲塔回転>

弾道予測に砲身を向ける機能です。

f:id:namiton:20220314150533p:plain

補完速度を変更することで砲塔回転速度を変更できます。

変数化しておきましょう。

f:id:namiton:20220314150721p:plain

 

<射角チェック>

砲身と予測線との角度の許容値です。

f:id:namiton:20220314150943p:plain

変数化しておきましょう。

f:id:namiton:20220314151209p:plain

 

<砲弾発射>

砲弾の生成から発射を行います。

f:id:namiton:20220314152422p:plain

発射間隔を変数化します。

f:id:namiton:20220314151405p:plain

生成する弾のスケールは

予測線の判定の変数を使用して設定します。

f:id:namiton:20220314151939p:plain

②変数の公開

作成された変数は右の目のアイコンを押して公開しておきましょう。

f:id:namiton:20220314152100p:plain

 

これでレベルタブの詳細から変更できるようになりました。

実行している状態で値を変更してみましょう。

f:id:namiton:20220314152201p:plain

 

F8キーでエディタ操作に戻って値を変更できます。

f:id:namiton:20220314153908p:plain

 

③反応範囲の可視化

画像のイメージで大砲が反応するエリアを描画します。

MaxDistanceとMinDistanceの値を参照して変更する必要があります。f:id:namiton:20220314152838p:plain

これを実現するには大砲(赤丸)を中心に最大射程範囲(水色の円)から最小射程範囲(黄色の円)をくりぬいてあげれば完成しますね!

 

くりぬきを実現するにはマテリアルのマスクという機能を活用する必要があります。

実装と同時にマテリアルの知識も学習しましょう。

f:id:namiton:20220314153430p:plain


<範囲描画用のコンポーネントの追加>

BP_Cannonを開き二種類のStaticMeshを追加します。

名前はそれぞれMaxDistanceMesh・MinDistanceMeshに変更します。

f:id:namiton:20220314154411p:plain

それぞれSphereを適応。コリジョンプリセットをNoCollisionに変更します。

f:id:namiton:20220314154653p:plain

円のサイズはそれぞれのDistanceの1/50に等しいので

それぞれのスケールをDistanceを元に変更しましょう。

f:id:namiton:20220314155200p:plain

本来ならいらないですが値が変更されたときに一緒に更新されるようTickからも接続しておきます。

f:id:namiton:20220314155520p:plain

 

実行すると画像のようになります。

エリアが表示されましたね!

Distanceの値を変更すると連動することも確認しておきましょう。

f:id:namiton:20220314155308p:plain

<マテリアルの作成と適応>

エリア表示用のマテリアルを作成します。

コンテンツ右クリックからマテリアルを選びます。

f:id:namiton:20220314160007p:plain

名前をM_Distanceにしましょう。

f:id:namiton:20220314160050p:plain

ダブルクリックで開きます。

ブループリントとは異なりマテリアルを編集するウィンドウが表示されます。

保存をおしてコンパイルを通しておきましょう。

f:id:namiton:20220314160146p:plain

 

BP_Cannonに戻りMaxDistanceMeshのマテリアルを変更してみましょう。

f:id:namiton:20220314160326p:plain

f:id:namiton:20220314160410p:plain

作成されたマテリアルが適応されました。

f:id:namiton:20220314160504p:plain

<半透明を使う>

マテリアルに戻り

半透明を扱えるTranslucentと影を付けないUnlitに変更しましょう。

f:id:namiton:20220314160617p:plain

グラフ上で1を押しながらクリックするとfloat型の変数が作成できます。

Valueを0.3にしてオパシティ(ここでは透明度)につなぎます。

f:id:namiton:20220314160924p:plain

保存してレベルに戻りましょう。

エリアが半透明に表示されました。

 

<色を変更する>

ついでに色も変更できるようにしましょう。

3をおしたままクリックするとカラーの定数を作成できます。

エミッシブカラー(発光)に接続します。

f:id:namiton:20220314161204p:plain

ダブルクリックで値を変更できます。

f:id:namiton:20220314161234p:plain

保存してレベルに戻りましょう。

色が変更されました。

f:id:namiton:20220314161342p:plain

 

<マテリアルインスタンスでスムーズに確認する>

マテリアルを編集していると分かりますが値を変更して保存して適応されるで時間がかかります。

そこでマテリアルインスタンスという機能を使って高速に値を変更できるようにしていきます。

そのためには値を変数にする必要があります。

ノードを右クリックしてパラメータに変換を押します。

f:id:namiton:20220314161629p:plain

それぞれ名前を変更しておきましょう。

保存して変数化は完了です。

f:id:namiton:20220314161801p:plain

コンテンツから右クリックしてマテリアルインスタンスを作成を押します。

名前をMI_Distanceにします。

f:id:namiton:20220314161908p:plain

開いて変数を変更してみましょう。

リアルタイムに変更を確認できるようになりました。

f:id:namiton:20220314162022p:plain

マテリアルインスタンスはマテリアルから作られた子供です。

別のマテリアルとして扱われるので一括で変更したり、色違いを量産したりするのにもってこいの機能です。

f:id:namiton:20220314162256p:plain

 

<マテリアルインスタンスの適応>

メッシュの色をマテリアルインスタンスに変更してみましょう。

f:id:namiton:20220314162404p:plain

これでリアルタイムに変更できるようになりました。

f:id:namiton:20220314162509p:plain

 

次回くりぬき処理のやり方について解説予定です。

最後に

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

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

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

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