こんにちは、SAT-BOXのコアラです
ゲームのロード画面には何かしらの演出や動きがついていることが多いですが、今回は演出の1つとして流れる背景の作り方を紹介したいと思います
例としてボクらのスクールバトルのロード画面を持ってきました
この画面の背景の、ハサミや数式など柄の入った1枚絵をループして流れるようにしていきます
ちなみにボクらのスクールバトルはNintendo Switch用ゲームとして12月19日(木)に配信開始されます!
購入はコチラから
Nintendo Switch|ダウンロード購入|ボクらのスクールバトル
さて、Unityで作っていきますが、今回は uGUI の RawImage を使って実装してみます
まず、Unityで Canvas と RawImage を作成して、RawImage を画面サイズに合わせて調整してください
こんな感じで
ここまでで半分完成です。はやーい
あとは、画像の赤枠で囲ってある 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 でやりましたが、マテリアルとかでも同じようなことができますし、ロード中の背景に限らず色々と使えると思います
以上です