はじめに
ユニティを使用してゲームを作成している皆さん、こんにちは!シーバです。
今、作成中のゲームの背景を無限スクロールさせてみました。
Unityでゲームを作る際に、背景を無限スクロールさせる機能は、ランナーゲームやシューティングゲームなど、様々なタイプのゲームにおいて魅力的な演出を加えることができます。
この記事では、Unityで背景を無限にスクロールさせる方法を初心者にもわかりやすく解説していきます。Unityの基本知識があれば、誰でも簡単に実装することが可能です。
必要な素材の準備
まずは、スクロールさせたい背景の画像を準備しましょう。この画像は、スクロールを自然に見せるために、繰り返し使用できるようなデザインが適しています。画像はUnityプロジェクトのAssetsフォルダにインポートしてください。
背景を無限スクロールさせる
今回は縦長の背景を使用しています。
まずは背景を縦につなげて3つならべました。メインカメラはBだけを映しています。
複数の背景画像を使う場合は、それぞれを同じサイズにして並べると良いでしょう。
三枚の背景のYの数値を記録します。
Y座標の数値はAが19.17、Bが0、Cが-19.17、になっています。
![Unityエディタ上での説明](https://cbagames.jp/wp-content/uploads/2022/09/1b28166f5c3987aabe44701b4082ff34-1024x536.png)
この並べた背景を上から下に移動させてCの位置に来た画像をAの位置に戻すことで無限スクロールを作ります。
![Unityエディタ上での説明](https://cbagames.jp/wp-content/uploads/2022/09/589559a2b1e2f5ade4110cb63b00603a-1024x536.png)
スクリプト
背景を無限にスクロールさせるためのスクリプトを作成します。以下は、背景を水平に無限にスクロールさせる簡単な例です。このスクリプトを新しいC#スクリプトファイルに記入し、背景A,B,C,にアタッチしてください。
- スクリプトは
BackGround
クラスを定義しており、MonoBehaviour
を継承しています。Unityのゲームオブジェクトにアタッチして使用します。 speed
変数は、背景がスクロールする速さを制御します。SerializeField
属性がついているので、Unityエディタから直接値を変更できます。Update
メソッドは、フレームごとに呼び出されます。このメソッド内で背景を下方向に動かしています。transform.position -= new Vector3(0, Time.deltaTime * speed);
この行で、現在の位置から下方向に動かす処理を行っています。Time.deltaTime
は前のフレームからの経過時間を表し、speed
と掛け合わせることで一定の速度で移動させます。
- 背景の位置がy座標-19.17以下になった場合、背景をy座標19.17の位置に戻します。これにより、背景が無限にスクロールするように見える効果を実現しています。
if (transform.position.y <= -19.17f)
で位置をチェックし、transform.position = new Vector2(0, 19.17f);
で位置をリセットしています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BackGround : MonoBehaviour
{
//スクロールスピード
[SerializeField] float speed = 1;
void Update()
{
//下方向に動かす
transform.position -= new Vector3(0, Time.deltaTime * speed);
//Yが-19.17まで下がったら、19.17まで戻す
if (transform.position.y <= -19.17f)
{
transform.position = new Vector2(0, 19.17f);
}
}
}
こんな感じで無限スクロールするようになりました。
画像をぴったり並べただけだとわずかに隙間が見えてしまうのでほんの少し重なるくらいに設定してみました。各背景画像のOrderinLayerの設定を忘れるとプレイヤーなどが見えなくなってしまいます。-1に設定しておきました。
スクリプトを背景オブジェクトにアタッチした後、Unityエディタのインスペクターから、スクロールの速度を調整できます。ゲームの雰囲気やテンポに合わせて、この値を調整してください。
スクロールの速度を上げすぎると崩壊しますw
まとめ
Unityで背景を無限スクロールさせる方法は、とても簡単です。今回紹介した方法を実践することで、あなたのゲームに簡単に無限スクロール背景を追加することができるでしょう。
初心者の方でも、この記事を通じて基本的なコンセプトと実装方法を理解し、自分のプロジェクトに応用することが可能です。この記事があなたのゲーム開発に役立つことを願っています。