今制作中のゲームで特定のオブジェクトを表示するミニマップUIを作ったのですが思った以上に苦戦した...
作るに当たってうなうなぎさんのこの記事等を参考にしました。
まずWidgetを動かすにはアクターなどを動かす時みたいにどの方向にどのくらいのスピードでとかではなく、直接Widgetの座標を動かします。
当たり前といえばそうなのですがそんな便利なのはないのかなと最初は期待していました...
そしてその座標を動かすにはSet Positionを使います。
これはうなうなぎさんの記事でも紹介されています。
Targetに動かしたいWidget(UIの部品みたいなもの。ボタンとかテキストとか)を割り当ててIn Positionの値を変えればいいという単純なもの。
これで動かすことはできたのですが特定のオブジェクトを表示するミニマップUIなのでオブジェクトの数がゲーム中に変わることも十分ありうる!
どうゆうことかといいますと例えば敵が表示されるUIを作る場合。
・敵が消えたらWidgetを消して
・敵が新しくスポーンされたら新しいWidgetを増やさないとならない!
これが意外と苦戦しました...
方法は2つ
・追加したいWidgetを作成したウィジットを別で作ってそこから引っ張ってくる方法
・メインとなるCanvasからChild to Actorで子供を作ってCanvas Slot Panelとして出力する方法
AnswerHubでも投稿したらnullponullさんが回答してくれました!
BPからUMGのCanvas内にpaletteを追加することは可能ですか? - UE4 AnswerHub
僕はWidgetを別で作る方法で作成しました。
二度手間というかWidgetを2つ作らなきゃいけないので結構邪道な感じしますw
それで実際に作ったのがこんな感じ(去年の動画ですが...w)
とりあえずUMGでマップのシステムだけでけたー 壁とか扉置けばマップ上でも勝手に増えるよ♪ Imageだから画像置き換えられるよー pic.twitter.com/HCuWKR0Gtf
— Tonkotsu (@tonkotsu3656) 2015, 11月 20
2つ目のやり方も子供から子供作るやり方なのでどちらも邪道な感じがします...
孫かな?
もっといい方法あったら教えてもらえると喜びます~!
UE Version : 4.9