今回は、UnityのUIを使ったエネルギーメーターの表示方法について紹介する
このゲームには、ゾンビから逃げるために、Shiftキーを押しながらWASDのどれかを押すと、通常の走る速度に切り替えが可能な仕様が入っており、この走るためのエネルギーをエネルギーメーターとして表示している
走る速度に制限をつけているのは、ゲームのレベルデザイン、ドキドキ感を付加する観点からである(と偉そうに言うが、常に走り続けられたらゲームが簡単になりすぎるよね)
〇用意するもの
・エネルギーバー表示 メーター UI Image
・エネルギーバー表示 総量表示用 背景 UI Image
・説明表示用テキスト UI Text
・制御用スクリプト
まずは、Create-UIからImageを選択
上記のように同じサイズのImageを二つ作り、背景のメーター総量表示用は灰色、現在の量の表示用は赤に、InspectorのColorを調整する
メーターだけでは何を示しているかが分かりづらいので、いちおう説明用にラベルを付けておく(今回はEnergyと表示)
制御用のスクリプトについては、Update関数の中で、下記の関数を呼び出して表示を更新している
//UIのImageを取得するためpublicで定義
public Image EnergyBar;
//エネルギーバーの表示を制御するための関数
void DrawEnergyBar()
{
//現在のエネルギーの割合を算出
float rate = Energy / FirstEnergy;
//エネルギーバーのスケールを先ほど算出した割合を入れる
EnergyBar.transform.localScale = new Vector3(rate, 1, 1);
//残量に合わせて色を赤から黄色へと変化させる
if (rate < 0.5f)
{
EnergyBar.color = Color.yellow;
}
else
{
EnergyBar.color = Color.red;
}
}
一応、エネルギー自体のスクリプトも載せておく
void EnergyAdjust()
{
//左のシフトキーを押しているかを判定
if (Input.GetKey(KeyCode.LeftShift))
{
if (Energy > 0)
{
//エネルギーが0より大きければ、押している時間分エネルギーをマイナス
Energy -= Time.deltaTime*5;
}
}
else
{
if (Energy < 100)
{
//シフトを押していなくて、エネルギーが100より小さければ時間とともにプラス
Energy += Time.deltaTime;
}
}
float rate = Energy / FirstEnergy;
if (rate< 0.3f)
{
//エネルギーの残量が0.3の場合はスピードも遅くする
float speedrate = rate /0.3f;
//走るスピードを変更
FPSCtrl.RunSpeedAdjust(speedrate);
}
}
〇まとめ
・UI ImageのlocalScaleをスクリプトで制御してメーターの増減を表現
今回は以上