第02回 複数の解像度に対応する(引き伸ばす)

kyusyukeigo edited this page Feb 26, 2015 · 1 revision

使用するプロジェクト

この回はゲーム制作編第12回終了時点のプロジェクトを使用します。

ゲーム制作編第12回のプロジェクトファイルをダウンロード

2.1 ゲームビューの画面サイズ変更

まずFile → Project Settings...PlatformをAndroidまたはiOSに変更しましょう。今回はAndroidへ変更を行います。

次にゲームビューの画面サイズを**16:10 Landscape (16:10)**にしましょう。


図2.1のように青色の背景が見えていたら正常です。

カメラの見える範囲が広くなった状態
図2.1: カメラの見える範囲が広くなった状態

2.2 BackgroundとDestroyAreaの変更

今回は、画面サイズの変更によるBackgroundsとDestroyAreaの修正を「引き伸ばす」事によって対応します。

Backgroundのスケール変更

Front, Middle, Backそれぞれのスケール
図2.2: Front, Middle, Backそれぞれのスケール

Background.csにコードを追加して、スケールを画面サイズに合わせるように変更します。

Background.cs

using UnityEngine;

public class Background : MonoBehaviour
{
    // スクロールするスピード
    public float speed = 0.1f;

    void Start ()
    {
        // 画面右上のワールド座標をビューポートから取得
        Vector2 max = Camera.main.ViewportToWorldPoint (new Vector2 (1, 1));

        // スケールを求める。
        Vector2 scale = max * 2;

        // スケールを変更。
        transform.localScale = scale;
    }

    void Update ()
    {
        // 時間によってYの値が0から1に変化していく。1になったら0に戻り、繰り返す。
        float y = Mathf.Repeat (Time.time * speed, 1);

        // Yの値がずれていくオフセットを作成
        Vector2 offset = new Vector2 (0, y);

        // マテリアルにオフセットを設定する
        renderer.sharedMaterial.SetTextureOffset ("_MainTex", offset);
    }
}

ゲームを再生してみましょう。ゲーム再生直後に背景が画面いっぱいに広がるはずです。

DestroyAreaのスケール変更

変更前のDestroyArea
図2.3: 変更前のDestroyArea

DestroyAreaもBackgroundと同じようにスケールを変更していきます。

DestroyArea.cs

using UnityEngine;

public class DestroyArea : MonoBehaviour
{
    void Start ()
    {
        // 画面右上のワールド座標をビューポートから取得
        Vector2 max = Camera.main.ViewportToWorldPoint (new Vector2 (1, 1));

        // サイズを求める
        Vector2 size = max * 2;

        // BoxCollider2Dのサイズを変更
        GetComponent<BoxCollider2D> ().size = size;

    }

    void OnTriggerExit2D (Collider2D c)
    {
        Destroy (c.gameObject);
    }
}

第02回終わり

今回はここで終了です。つまずいてしまった方はプロジェクトファイルをダウンロードして新たな気持ちで次の回へ進みましょう。

今回のプロジェクトファイルをダウンロード

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.