Unity研究所<Unityによるゲーム開発、映像開発>

Unity初心者40代後半中年中間管理職おやじが綴るゲームで小遣い稼ぎできるようになるまでのブログ

⑧エネルギーメーター表示

今回は、UnityのUIを使ったエネルギーメーターの表示方法について紹介する

f:id:Harukichi:20190827222331g:plain


このゲームには、ゾンビから逃げるために、Shiftキーを押しながらWASDのどれかを押すと、通常の走る速度に切り替えが可能な仕様が入っており、この走るためのエネルギーをエネルギーメーターとして表示している

 

走る速度に制限をつけているのは、ゲームのレベルデザイン、ドキドキ感を付加する観点からである(と偉そうに言うが、常に走り続けられたらゲームが簡単になりすぎるよね)

  

 〇用意するもの

 ・エネルギーバー表示 メーター UI Image 

 ・エネルギーバー表示 総量表示用 背景 UI Image

 ・説明表示用テキスト UI Text

 ・制御用スクリプト

 

f:id:Harukichi:20190827220228p:plain

 まずは、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をスクリプトで制御してメーターの増減を表現

 

今回は以上