目次
はじめに
注意
UE5Preview2の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
Preview2になりReal型が従来のfloatに戻りました。
バージョンアップ時に自動的に置き換わるので問題ないですが、
従来の記事ではfloatに置き換えて実装してください。
解説
①BP_Cannonの変数化
BP_Cannonを開きます。
分かりやすいように、前回作成したブループリントに各ノードごとの機能にコメントを付けつつ変数化していきます。
<範囲チェック>
砲塔が反応する距離の確認する場所です。
反応する最大距離と最小距離を変数化しておきましょう。
条件数値を変数に昇格して名前をMaxDistance・MinDistanceにそれぞれしましょう。
変数へ昇格する機能を使用するメリット
マイブループリントから型指定して変数をつくるのではなく
変数へ昇格するボタンから変数を作成すると、設定値がデフォルト値に反映されます。
既存の値がそのまま反映されるので、積極的に使っていきましょう。
<弾道予測生成>
予測線を生成する場所です。
ArcParamの値を変数化しましょう。
この値の0~1の範囲で弾道の山なり具合が変更できます。
また不正な値が入らないように制限もつけておきましょう。
詳細の値の範囲に入力するとその範囲内に値を抑えてくれます。
砲弾のサイズに合わせた着弾判定をしたいので
Projectile Radiusも変数化しましょう。
<砲塔回転>
弾道予測に砲身を向ける機能です。
補完速度を変更することで砲塔回転速度を変更できます。
変数化しておきましょう。
<射角チェック>
砲身と予測線との角度の許容値です。
変数化しておきましょう。
<砲弾発射>
砲弾の生成から発射を行います。
発射間隔を変数化します。
生成する弾のスケールは
予測線の判定の変数を使用して設定します。
②変数の公開
作成された変数は右の目のアイコンを押して公開しておきましょう。
これでレベルタブの詳細から変更できるようになりました。
実行している状態で値を変更してみましょう。
F8キーでエディタ操作に戻って値を変更できます。
③反応範囲の可視化
画像のイメージで大砲が反応するエリアを描画します。
MaxDistanceとMinDistanceの値を参照して変更する必要があります。
これを実現するには大砲(赤丸)を中心に最大射程範囲(水色の円)から最小射程範囲(黄色の円)をくりぬいてあげれば完成しますね!
くりぬきを実現するにはマテリアルのマスクという機能を活用する必要があります。
実装と同時にマテリアルの知識も学習しましょう。
<範囲描画用のコンポーネントの追加>
BP_Cannonを開き二種類のStaticMeshを追加します。
名前はそれぞれMaxDistanceMesh・MinDistanceMeshに変更します。
それぞれSphereを適応。コリジョンプリセットをNoCollisionに変更します。
円のサイズはそれぞれのDistanceの1/50に等しいので
それぞれのスケールをDistanceを元に変更しましょう。
本来ならいらないですが値が変更されたときに一緒に更新されるようTickからも接続しておきます。
実行すると画像のようになります。
エリアが表示されましたね!
Distanceの値を変更すると連動することも確認しておきましょう。
<マテリアルの作成と適応>
エリア表示用のマテリアルを作成します。
コンテンツ右クリックからマテリアルを選びます。
名前をM_Distanceにしましょう。
ダブルクリックで開きます。
ブループリントとは異なりマテリアルを編集するウィンドウが表示されます。
保存をおしてコンパイルを通しておきましょう。
BP_Cannonに戻りMaxDistanceMeshのマテリアルを変更してみましょう。
作成されたマテリアルが適応されました。
<半透明を使う>
マテリアルに戻り
半透明を扱えるTranslucentと影を付けないUnlitに変更しましょう。
グラフ上で1を押しながらクリックするとfloat型の変数が作成できます。
Valueを0.3にしてオパシティ(ここでは透明度)につなぎます。
保存してレベルに戻りましょう。
エリアが半透明に表示されました。
<色を変更する>
ついでに色も変更できるようにしましょう。
3をおしたままクリックするとカラーの定数を作成できます。
エミッシブカラー(発光)に接続します。
ダブルクリックで値を変更できます。
保存してレベルに戻りましょう。
色が変更されました。
<マテリアルインスタンスでスムーズに確認する>
マテリアルを編集していると分かりますが値を変更して保存して適応されるで時間がかかります。
そこでマテリアルインスタンスという機能を使って高速に値を変更できるようにしていきます。
そのためには値を変数にする必要があります。
ノードを右クリックしてパラメータに変換を押します。
それぞれ名前を変更しておきましょう。
保存して変数化は完了です。
コンテンツから右クリックしてマテリアルインスタンスを作成を押します。
名前をMI_Distanceにします。
開いて変数を変更してみましょう。
リアルタイムに変更を確認できるようになりました。
マテリアルインスタンスはマテリアルから作られた子供です。
別のマテリアルとして扱われるので一括で変更したり、色違いを量産したりするのにもってこいの機能です。
<マテリアルインスタンスの適応>
メッシュの色をマテリアルインスタンスに変更してみましょう。
これでリアルタイムに変更できるようになりました。
次回くりぬき処理のやり方について解説予定です。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。