【Unity】値が高くなるにつれて、背景色を変える方法

目次

経緯

Unityでゲームを作っていて、スコアが増えると、背景色が変わる演出ができないか、今回やって見ました。

” Mathf.Lerp()”を使う

まず、プログラムを書きます。ヒエラルキーウィンドウに「背景」があり、”GameDitector”というスクリプトの中に”Score”をカウントする関数がある想定です。

using UnityEngine;

public class BackgroundColorChanger : MonoBehaviour
{
    public GameDitector gameDirector;
    private SpriteRenderer spriteRenderer;

    // Start is called before the first frame update
    void Start()
    {
        gameDirector = GameObject.Find("GameDirector").GetComponent<GameDitector>();
        spriteRenderer = GetComponent<SpriteRenderer>(); // SpriteRenderer コンポーネントを取得
    }

    // Update is called once per frame
    void Update()
    {
        int score = gameDirector.GetScore();
        float ratio = Mathf.Min(score / 1000f, 1f); // 最大値を1に制限

        float newGreenValue = Mathf.Lerp(1f, 0f, ratio);
        float newBlueValue = Mathf.Lerp(1f, 0f, ratio);

        Color newColor = new Color(1f, newGreenValue, newBlueValue, 1f);
        spriteRenderer.color = newColor; // 背景画像の色を変更
    }
}

という感じで「BackgroundColorChanger」という新しくスクリプトを作ります。

これをヒエラルキーウィンドウの”背景”のアタッチします。

その前に”GetScore()”という関数を作らなければならないので、GameDitectorスクリプトにGetScore()を追加します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class GameDitector : MonoBehaviour
{
    public TextMeshProUGUI ScoreObject;
    public int Score = 0;

    // Start is called before the first frame update
    void Start()
    {
        this.ScoreObject = GameObject.Find("Score").GetComponent<TextMeshProUGUI>();
    }

    public void additme()
    {
        //itemタグのついたオブジェクトを検索する
        GameObject[] items = GameObject.FindGameObjectsWithTag("item");

        this.Score ++;

        //スコアを更新する
        ScoreObject.text = "Score: " + Score.ToString();
    }

    public int GetScore() //GetScore() メソッド追加
    {
        return this.Score;
    }

}

こんな感じで、GetScore()を追加します。

すると、スコアが増えるにつれて、赤くなっているのがわかると思います。

今回はGとBを変える仕様ですが、もちろんRもできるので、試して見てください。

参考になれば幸いです。

ここまで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次