コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第6回 背景のスクロール

目次

前回のチュートリアル

はじめに

前回は、プレイヤーがマウスカーソルの方を向くようにしました
今回は、ゲームの見栄えを少し良くするため、背景がスクロールするようにしていきます

背景を制御するスクリプトの作成

「Player」スクリプトを作成した時と同様の手順で、
「Background」スクリプトを作成します

そして、作成した「Background」スクリプトをコードエディタで開き、
下記のコードを記述します

using UnityEngine;

// 背景を制御するコンポーネント
public class Background : MonoBehaviour
{
    public Transform m_player; // プレイヤー
    public Vector2 m_limit; // 背景の移動範囲

    // 毎フレーム呼び出される関数
    private void Update()
    {
        // プレイヤーの現在地を取得する
        var pos = m_player.localPosition;

        // 画面端の位置を取得する
        var limit = Utils.m_moveLimit;

        // プレイヤーが画面のどの位置に存在するのかを、
        // 0 から 1 の値に置き換える
        var tx = 1 - Mathf.InverseLerp( -limit.x, limit.x, pos.x );
        var ty = 1 - Mathf.InverseLerp( -limit.y, limit.y, pos.y );

        // プレイヤーの現在地から背景の表示位置を算出する
        var x = Mathf.Lerp( -m_limit.x, m_limit.x, tx );
        var y = Mathf.Lerp( -m_limit.y, m_limit.y, ty );

        // 背景の表示位置を更新する
        transform.localPosition = new Vector3( x, y, 0 );
    }
}

コードを保存したら Unity エディタに戻り、「Background」スクリプトを
「Background」オブジェクトにドラッグして設定します

さらに、「Background」オブジェクトを選択した状態で、
「Player」オブジェクトを「Player」の欄にドラッグして設定します

そして、「Limit」(背景の移動範囲)の「X」に「2.9」、「Y」に「2.1」と入力します

これで、Unity を再生すると、プレイヤーの移動に合わせて
背景がスクロールするようになったことが確認できます

次回は、プレイヤーが弾を発射するようにしていきます

次のチュートリアル

チュートリアル一覧