【Unity】往復するゲージを簡単に作る

投稿者: | 2021-04-01

ゲージの値を簡単に往復させてみます。

ゲージを作る

まずはヒエラルキーウィンドウでImageを新規作成します。

作られたImageを選択してインスペクタで設定を変更します。Gameビューを見ながら、WidthとHeightを変えるとゲージを形を変えられます。

また、真っ白いだけの画像をインポートして、テクスチャのタイプをSpriteにして、上のImageコンポーネントのSource Imageにドラッグアンドロップします。

Source Imageの下のColorでゲージを色を変えられます。

さらに、ゲージのように動かすために、Image TypeをFilledにします。Fill Amountを0にすると画像が消えて、増加させると画像の見える範囲が増えて行きます。

Fill MethodやFill Originでゲージの動く方向を設定できます。

ゲージの値をスクリプトで変える

Imageにスクリプトを付けて、ゲージの値を変えます。常に値を動かすために、Updateメソッドの中で、時間の値を代入します。

そのときに三角関数を使うことで値を往復させます。

三角関数の式は、Desmos | グラフ計算機で簡単に作れます。このサイトでは、左側に式を入力すると右側にそのグラフが表示されます。

これで適当に式を作りました。ImageのFill Amountに使うので、二乗して0~1の範囲に収まるようにしました。

2乗するときは「^」の後に「2」を入力します。

作った式をスクリプトで、Image.fillAmountに入れます。

  1. using UnityEngine;
  2. using UnityEngine.UI;
  3.  
  4. public class Gauge2 : MonoBehaviour
  5. {
  6. Image gauge;
  7. float sec;
  8.  
  9. // Start is called before the first frame update
  10. void Start()
  11. {
  12. gauge = GetComponent<Image>();
  13. }
  14.  
  15. // Update is called once per frame
  16. void Update()
  17. {
  18. sec += Time.deltaTime;
  19. gauge.fillAmount = Mathf.Pow(Mathf.Sin(sec + Mathf.Sin(sec + Mathf.Sin(sec * 2))), 2);
  20. }
  21. }

これでグラフのようにゲージの値が往復するようになりました。

コメントを残す

メールアドレスが公開されることはありません。