アヒルのある日

株式会社AHIRUの社員ブログです。毎週更新!社員が自由に思いついたことを書きます。

3D空間のオブジェクトに追従するUIの話

こんにちは!おもろいプログラマです。

今日は真面目にUE4の話題を。

ゲーム制作中に3D空間のオブジェクトの位置に2DのUIを配置したい事ってありませんか? 無いですか。この話は終わりですね。

…いえ、あるんです。

例えば、こんな風なHPゲージを3Dキャラクターの位置に出して、タップでサブメニューを出すような仕様の時、 キャラクタの位置にwidgetのボタンをUIとして置く事ができれば面倒な計算をせずクリックイベントを取れると思いませんか?(※画像はイメージなので2Dです) 3D空間にビルボードを置いて、クリックされたスクリーンからのレイが当たってるかの判定なんていちいち面倒でやってられません。

そんな時に使えるwidgetの構成があるんです。

その構成とはズバリこれ!

この構成を追従させたいwidgetのBlueprintに作成し、[Target]に追従対象のアクタを設定するだけ! あとはWidget上でボタンを用意してしまえば「3D空間上のオブジェクトを追いかけるUI」の完成!

(各要素の細かい説明が気になる人は、各ノードの名前で調べてください。長くなってしまうので…。)

UEに用意されている機能を使用しているので、基本操作さえ分かっていれば誰だって作れます。 こういう痒い所に手が届く機能を用意している当たり、ゲームエンジンってすごいですよね。

…とはいえ、この技は「追従してもUIのサイズが変わらない」ので、基本的にはタップの判定を小さくしたくないスマホ用アプリの小技って感じです。 基本的には距離に応じての拡縮が必要になり、それを入れるくらいなら3D空間上に作成した方が早いっていうのがホンネです。

中々全て同じ様にはいきませんが、こういうのもゲーム作りの醍醐味ですよね。

では、またー。