第02回 複数の解像度に対応する(引き伸ばす)
この回はゲーム制作編第12回終了時点のプロジェクトを使用します。
まずFile → Project Settings...
でPlatformをAndroidまたはiOSに変更しましょう。今回はAndroidへ変更を行います。
次にゲームビューの画面サイズを**16:10 Landscape (16:10)**にしましょう。
図2.1のように青色の背景が見えていたら正常です。
図2.1: カメラの見える範囲が広くなった状態
今回は、画面サイズの変更によるBackgroundsとDestroyAreaの修正を「引き伸ばす」事によって対応します。
図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);
}
}
ゲームを再生してみましょう。ゲーム再生直後に背景が画面いっぱいに広がるはずです。
図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);
}
}
今回はここで終了です。つまずいてしまった方はプロジェクトファイルをダウンロードして新たな気持ちで次の回へ進みましょう。
第01回 スプライトとスプライトアニメーションの作成
第02回 プレイヤーの移動
第03回 プレイヤーから弾を撃つ
第04回 敵を作成しよう
第05回 当たり判定とアニメーションイベントとレイヤー
第06回 背景を作る
第07回 Wave型の仕組み作り
第08回 音をつける
第09回 プレイヤーの移動制限と様々な修正
第10回 タイトルを付ける
第11回 エネミーのHP、弾の攻撃力、アニメーションの追加
第12回 Waveを5個にする、スコアの実装
第01回 複数の解像度に対応する(黒帯を追加する)
第02回 複数の解像度に対応する(引き伸ばす)
第03回 タッチパネル対応
第04回 バーチャルジョイスティック対応