【Roblox】ScreenGuiのUI配置とゲージの作成
はじめに
こんにちは、まつさこ です。
今回は、RobloxでUIを配置する方法を紹介します。その過程で、体力ゲージのように動作するバーゲージを作成します。
必要なパーツの準備
まずは、UIを配置するためのパーツを準備しましょう。
StarterGui
にマウスカーソルを合わせ、「+」ボタンをクリックして ScreenGui
を追加します。
次に、ScreenGui
に Frame
を追加します。先ほどと同様に ScreenGui
にマウスカーソルを合わせ、「+」ボタンをクリックして Frame
を追加します。
ゲーム画面の左上に白い正方形が配置され、カメラの位置に関わらず常に画面に表示されるようになります。これが Frame
です。
さらに、ゲージの内側を表現するためにもうひとつ Frame
を追加します。Frame
の下にもう一つ Frame
と追加して、Gauge
という名前にしておきましょう。
区別できるように、Gauge
の背景色(BackgroundColor3)を変更しておきます。Sizeも、x,y共にOffsetを 90
にし、一回り小さくしておきましょう。
ScaleとOffsetの違いについては、後ほど説明します。
UIの調整
AnchorPoint
Frame
には、AnchorPoint
と Position
というプロパティがあります。これらは、UIの配置に関わる重要なプロパティです。
AnchorPoint
は、UIの配置の基準点を指定します。X軸とY軸のそれぞれについて、0から1の値を指定します。例えば、X軸が0.5、Y軸が0.5の場合、UIの中心が基準点になります。少しわかりづらいですが、基準点には黒い点が表示されます。
LuaスクリプトからUIパーツの位置やスケールを変更する際は、この AnchorPoint
が基準となります。
※Rotationは、常にFrameの中央(Anchorが0.5, 0.5の位置)が回転の中心となるようです。
Position
Position
には、X軸Y軸共に Scale
と Offset
という項目があります。
Scale
は親要素に対する相対的な位置を0~1の値で指定します。親要素の左上が0,0、右下が1,1です。
下の画像の Frame
オブジェクトは、 ScreenGui
(つまり画面全体)に対して、左上から 0.5, 0.1
の位置に配置されています。X軸方向には中央、Y軸方向には上から10%の位置に配置されているということです。
Size
Size
にも、X軸Y軸共に Scale
と Offset
という項目があります。
Scale
は親要素に対する相対的なサイズを0~1の値で指定します。親要素のサイズに対して、どの程度の割合で表示するかを指定します。Offset
はピクセル単位で、絶対的なサイズを指定します。
下の画像の Frame
オブジェクトは、 ScreenGui
(つまり画面全体)に対して、幅 0.75
高さ 0.1
のサイズを持っています。つまり、画面全体の幅の75%と高さの10%のサイズを持っているということです。
編集ウィンドウのサイズを変えると、UIのサイズも変わることが確認できると思います。
ゲージの作成
先述の AnchorPoint
と Position
、 Size
の説明を踏まえて、ゲージを作成していきます。内側の緑の Gauge
のX軸方向のサイズを変更することで動作させる想定で組みます。
ポイントは
-
Gauge
のAnchorPoint
を (0, 0.5) に設定することでサイズを変更した時の基準が左端になるようにする -
Position
を Scale(0.02, 0.5) に設定することで、Frame
の左端から2%の位置かつ縦方向には中央に配置されるようにする
-
Size
を Scale(0.96, 0.8) に設定することで、Frame
の幅の96%、高さの80%のサイズを持つようにする
これで、ゲージの内側の Gauge
が作成できました。
Gauge
のX軸方向のSizeのScaleを 0~0.96 の間で変更することで、ゲージをMinからMaxまで動かすことができます。
スクリプトの作成
最後に、ゲージのサイズを変更するスクリプトを作成します。
Gauge
の子要素として GaugeScript
という名前で LocalScript
を追加します。
local gauge = script.Parent
local function SetGauge(rate)
gauge.Size = UDim2.new(rate * 0.96, 0, 0.8, 0)
end
-- テスト
SetGauge(0.8)
SetGauge
関数は、引数に与えられた値を元に Gauge
のサイズを変更する関数です。テストとして、SetGauge(0.8)
を呼び出しているので、ゲームを再生するとゲージが80%になっているのが分かると思います。
RemoteEventを使用するなどして、適切なタイミングで SetGauge
を呼び出すことで、ゲージを動作させることができます。
まとめ
今回は、RobloxでUIを配置する方法を紹介しました。その過程で、体力ゲージのように動作するバーを作成しました。
読んでくださりありがとうございました🤗
Discussion