#UE4でいわゆるRTSの探索マップの原型を作る
##目的
RenderTargetの機能を利用して、プレイヤーが操作するキャラクターが移動するとともに背景が現れるようなゲーム要素の作成をしてみよう
##環境
UnrealEngine 4.15.2
##手段
1.見下ろしシューティングのサンプル(TwinStick)を利用します。
2.モードのウィンドウから平面を選択して配置します。
サイズを1000x1000にするので、XYにスケールをかけてマップやキャラクターが隠れるぐらい上に上げます。(大体400ぐらいにしました。)
アクタはブループリントに変換して、保存しておきましょう。(仮に名前はBP_Planeに変更しておきました。)
4.同フォルダで右クリックして、メニューからマテリアル・テクスチャのCanvasRenderTarget2Dと、マテリアルを作成しておきます。(仮にT_CanvasとM_Canvasにしておきます。)
5.T_Canvasの設定を平面のサイズと同じ1000x1000にして、Clamp設定に変更して、HDRも使わないのでチェックを外しておきます。
6.M_CanvasにはT_Canvasをドラッグ&ドロップのあと、BlendModeをTranslucentに変更し、ベースカラーとオパシティにそれぞれRGBのピンとAlphaのピンをつなげておきます。
7.BP_PlaneにM_Canvasのマテリアルを紐づけましょう。CanvasRenderTarget2Dのリファレンスを持てるように変数をMyCanvasという名前で設定しておきます。
コンパイル後、デフォルト値にT_Canvasを入れておきましょう。
8.さて、TwinStickPawnのほうを進めましょう。
イベントTickからつながるSequenceにピンを追加して、BP_Planeアクターすべて検索し、ForEachLoopで回しておきます。
9.BP_Planeで下記のような関数を作りました。
(LineTraceでとったほうがいいかもしれませんが、うまく取れなかったので方向転換、単純な内容なので今回は作成しました。)
10.GetXYPlaneHitUVの中身は下記のような形です。
位置とオフセットとBP_Planeのリファレンスを入力にとって、当たった時のUVを返します。
(全体像)※エリアは平面のバウンディングボックスから取得しています。
11.Hitした後はBeginDrawCanvastoRenderTargetとEndDrawCanvastoRenderTargetを設定、DrawPolygonで指定の半径でポリゴンを透明色で書いてしまいます。
(アルファはカラーピッカーの高度な設定で設定できます。)
12.一度プレイしてみましょう。
カメラが埋まってしまったので、BP_PlaneのStaticComponentに設定されているコリジョンプリセットをNoCollisionに変更します。
(おや?再スタート時にRenderTargetがクリアされていないので、空いたままになっています。)
14.BP_PlaneのBeginPlay時にRenderTargetを塗りつぶしてクリアしてしまいましょう。
15.今度こそうまくいきました。
ゲーム制作時のアイデア実現のファーストパスとして如何でしょうか。
↓リスタート
##パッケージ
https://drive.google.com/file/d/16osDxwUT7O71SNimIb9P7m5pfrB0Q1Bh/view?usp=sharing
##参考Webページ
◇BiginCanvasToRenderTarget関数の使い方について
http://miyahuji111.hatenablog.com/entry/2016/09/22/125840