【Unity】ScratchのブロックをUnityで再現しよう~見た目④~

色の効果を25ずつ変える ScratchからUnityへ
色の効果を25ずつ変える

Scratch のブロックを Unity で再現するときに、どのような方法があるのかを紹介していきます。

ScratchのブロックをUnityで再現しよう

色の効果を25ずつ変える

Scratch の「色の効果を25ずつ変える」ブロックを Unity で作ってみましょう。

色の効果を25ずつ変える
色の効果を25ずつ変える

準備

「見た目③」と同様に「2D(URP)」のプロジェクトを作成します。

Sprite の配置

「動き⑥」を参考にスプライトを配置します。

Sprite の配置
Sprite の配置

AnimSpriteColor スクリプトの作成

Sprite のゲームオブジェクトに次の AnimSpriteColor スクリプトを新規作成します。

using System.Collections;
using UnityEngine;

[RequireComponent(typeof(SpriteRenderer))]
public class AnimSpriteColor : MonoBehaviour {
    [SerializeField]
    private float m_fAnimInterval = 0.2f;       // アニメーションの更新間隔(秒).
    [SerializeField]
    private float m_fAnimSpeed = 0.25f;         // アニメーションの速度.

    private SpriteRenderer m_rSpriteRenderer = null;    // SpriteRendererコンポーネント.

    void Start() {
        m_rSpriteRenderer = GetComponent<SpriteRenderer>();
        StartCoroutine(CoAnimRun());
    }

    /// <summary>
    /// スプライトの色を変えるアニメーション.
    /// </summary>
    /// <returns></returns>
    private IEnumerator CoAnimRun() {
        while (true) {
            // 次の更新まで待つ.
            yield return new WaitForSeconds(m_fAnimInterval);
            Color rColor = m_rSpriteRenderer.material.color;
            float fH, fS, fV;
            Color.RGBToHSV(rColor, out fH, out fS, out fV);
            fH = fH + m_fAnimSpeed;
            // 小数部分のみにする.
            fH = fH - Mathf.FloorToInt(fH);
            // SVは固定.
            fS = 1f;
            fV = 1f;
            m_rSpriteRenderer.material.color = Color.HSVToRGB(fH, fS, fV);
        }
    }
}
AnimSpriteColor の追加
AnimSpriteColor の追加

動作確認

Unity エディター上で動作確認しましょう。
Sprite の色が変わるアニメーションをしていれば成功です。
Inspector で AnimSpeedColor のパラメータを変更してアニメーション速度を変更することができます。

動作確認
動作確認

プログラムのちょこっと解説

今回は「色の効果を25ずつ変える」ために、SpriteRenderer の色(Color)を変更してみました。
色は RGB を使うことが多いですが、HSV に変換して使用することも出来ます。

Color-RGBToHSV - Unity スクリプトリファレンス
入力されたカラーの色相、彩度、そして RGB 値を計算します。
Color-HSVToRGB - Unity スクリプトリファレンス
HSV の入力値から RGB 色を作成します。

まとめ

Scratch の「色の効果を25ずつ変える」ブロックと同じ動きを Unityで作ってみました。
キャラクターの見た目が変わると、目を引くゲームが作れそうです。

Unity の機能を使い倒して、さらに面白いゲームを作れるようになりましょう。

コメント

タイトルとURLをコピーしました