LoginSignup
3

More than 3 years have passed since last update.

posted at

updated at

UE4でいわゆるRTSの探索マップの原型を作る

UE4でいわゆるRTSの探索マップの原型を作る

目的

RenderTargetの機能を利用して、プレイヤーが操作するキャラクターが移動するとともに背景が現れるようなゲーム要素の作成をしてみよう

結果画面
ScreenShot00006.jpg

環境

UnrealEngine 4.15.2

手段

1.見下ろしシューティングのサンプル(TwinStick)を利用します。
SnapCrab_TwinStick - アンリアルエディタ_2017-5-15_2-33-43_No-00.png

2.モードのウィンドウから平面を選択して配置します。
サイズを1000x1000にするので、XYにスケールをかけてマップやキャラクターが隠れるぐらい上に上げます。(大体400ぐらいにしました。)
アクタはブループリントに変換して、保存しておきましょう。(仮に名前はBP_Planeに変更しておきました。)

ScreenShot00006_1.jpg

(サイズ変更)
SnapCrab_NoName_2017-5-15_1-16-32_No-00_1.jpg

4.同フォルダで右クリックして、メニューからマテリアル・テクスチャのCanvasRenderTarget2Dと、マテリアルを作成しておきます。(仮にT_CanvasとM_Canvasにしておきます。)

(Canvas)
ScreenShot00006_2.jpg

5.T_Canvasの設定を平面のサイズと同じ1000x1000にして、Clamp設定に変更して、HDRも使わないのでチェックを外しておきます。

SnapCrab_NoName_2017-5-15_1-32-11_No-00.jpg

6.M_CanvasにはT_Canvasをドラッグ&ドロップのあと、BlendModeをTranslucentに変更し、ベースカラーとオパシティにそれぞれRGBのピンとAlphaのピンをつなげておきます。

SnapCrab_M_Canvas_2017-5-15_1-33-5_No-00.png

7.BP_PlaneにM_Canvasのマテリアルを紐づけましょう。CanvasRenderTarget2Dのリファレンスを持てるように変数をMyCanvasという名前で設定しておきます。
コンパイル後、デフォルト値にT_Canvasを入れておきましょう。

(マテリアル設定)
SnapCrab_NoName_2017-5-15_1-41-53_No-00.jpg

(変数設定)
ScreenShot00006_4.jpg

8.さて、TwinStickPawnのほうを進めましょう。
イベントTickからつながるSequenceにピンを追加して、BP_Planeアクターすべて検索し、ForEachLoopで回しておきます。

(Sequenceピン追加)
SnapCrab_NoName_2017-5-15_1-46-59_No-00.jpg

(Class取得してForEarchで回す)
SnapCrab_NoName_2017-5-15_1-49-12_No-00.jpg

9.BP_Planeで下記のような関数を作りました。
(LineTraceでとったほうがいいかもしれませんが、うまく取れなかったので方向転換、単純な内容なので今回は作成しました。)

SnapCrab_NoName_2017-5-15_1-54-57_No-00.jpg

10.GetXYPlaneHitUVの中身は下記のような形です。
位置とオフセットとBP_Planeのリファレンスを入力にとって、当たった時のUVを返します。

(全体像)※エリアは平面のバウンディングボックスから取得しています。
SnapCrab_TwinStick - アンリアルエディタ_2017-5-15_2-16-9_No-00.png

11.Hitした後はBeginDrawCanvastoRenderTargetとEndDrawCanvastoRenderTargetを設定、DrawPolygonで指定の半径でポリゴンを透明色で書いてしまいます。
(アルファはカラーピッカーの高度な設定で設定できます。)

SnapCrab_NoName_2017-5-15_2-0-11_No-00.jpg

12.一度プレイしてみましょう。
カメラが埋まってしまったので、BP_PlaneのStaticComponentに設定されているコリジョンプリセットをNoCollisionに変更します。

(Planeの下に入ったとたんこんな絵に)
SnapCrab_TwinStick ゲームプレビュー Standalone (64-ビットPCD3D_SM5)_2017-5-15_2-7-33_No-00.png

13.ひとまずうまくいったようです。
SnapCrab_TwinStick ゲームプレビュー Standalone (64-ビットPCD3D_SM5)_2017-5-15_2-17-58_No-00.png

(おや?再スタート時にRenderTargetがクリアされていないので、空いたままになっています。)
SnapCrab_TwinStick ゲームプレビュー Standalone (64-ビットPCD3D_SM5)_2017-5-15_2-18-32_No-00.png

14.BP_PlaneのBeginPlay時にRenderTargetを塗りつぶしてクリアしてしまいましょう。
SnapCrab_イベントグラフ_2017-5-15_2-27-22_No-00.png

15.今度こそうまくいきました。
ゲーム制作時のアイデア実現のファーストパスとして如何でしょうか。
SnapCrab_TwinStick ゲームプレビュー Standalone (64-ビットPCD3D_SM5)_2017-5-15_2-28-29_No-00.png
↓リスタート
SnapCrab_TwinStick ゲームプレビュー Standalone (64-ビットPCD3D_SM5)_2017-5-15_2-28-49_No-00.png

パッケージ

参考Webページ

◇BiginCanvasToRenderTarget関数の使い方について
http://miyahuji111.hatenablog.com/entry/2016/09/22/125840

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3