名古屋でアプリ・VR開発を行っています
ワクワクできるゲームをガンガン開発リリース中!

【Unity】ロード中に流れる背景を作る

こんにちは、SAT-BOXのコアラです


ゲームのロード画面には何かしらの演出や動きがついていることが多いですが、今回は演出の1つとして流れる背景の作り方を紹介したいと思います

例としてボクらのスクールバトルのロード画面を持ってきました
f:id:sat-box:20191209171459p:plain

この画面の背景の、ハサミや数式など柄の入った1枚絵をループして流れるようにしていきます


ちなみにボクらのスクールバトルはNintendo Switch用ゲームとして12月19日(木)に配信開始されます!
購入はコチラから
Nintendo Switch|ダウンロード購入|ボクらのスクールバトル


さて、Unityで作っていきますが、今回は uGUIRawImage を使って実装してみます

まず、Unityで Canvas と RawImage を作成して、RawImage を画面サイズに合わせて調整してください

こんな感じで
f:id:sat-box:20191209174709p:plain

ここまでで半分完成です。はやーい

あとは、画像の赤枠で囲ってある UV Rect の X と Y の数値をスクリプトから変えるだけです

その制御をしているのが BackgroundScroll ってやつですね、ソースコードを紹介します

using UnityEngine;
using UnityEngine.UI;

public class BackgroundScroll : MonoBehaviour
{
    private const float X_SPEED = 0.04f;
    private const float Y_SPEED = 0.04f;
    public RawImage background;
    
    void Update()
    {
        var rect = background.uvRect;
        rect.x = (rect.x + X_SPEED * Time.unscaledDeltaTime) % 1.0f;
        rect.y = (rect.y + Y_SPEED * Time.unscaledDeltaTime) % 1.0f;
        background.uvRect = rect;
    }
}

軽く解説していきます

X_SPEED と Y_SPEED がスクロールの速さですね
0.04だと1ループに25秒かかります(1 ÷ 0.04 = 25)
また、正負でスクロールの向きが変わり、どちらも正の数(0.04)だと左下に向かってスクロールしていきます
好みで自由に変えてください

unscaledDeltaTime を使用している理由は、ロード中は大抵 TimeScale を0にしているからですね

あとはこれをロード中に表示して完成です


今回は RawImage でやりましたが、マテリアルとかでも同じようなことができますし、ロード中の背景に限らず色々と使えると思います

以上です