LoginSignup
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-05-14

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
  3. You can use dark theme
What you can do with signing up
3