おもちゃラボ

Unityで遊びを作ってます

Spriteを画面いっぱいに広げるスクリプト

画面に配置したスプライトを画面いっぱいに広げたい場合、手作業で合わせるのは大変なので、スクリプトで調節する方法を説明します。

f:id:nn_hokuson:20160730100131p:plain

Spriteを拡大する流れ

カメラの画面サイズにスプライトの大きさをあわせる流れは、

  1. カメラの外枠のスケールをワールド座標系で取得
  2. スプライトのスケールもワールド座標系で取得
  3. 両者の比率を出す
  4. スプライトのローカル座標系に反映

の順番です。

Spriteを画面にフィットさせるスクリプト

スクリプトはこちらです。このスクリプトを画面にフィットさせたいスプライトにアタッチすると、自動的に画面いっぱいまで拡大されて表示されます。

void FillScreen()
{
	SpriteRenderer sr = GetComponent<SpriteRenderer>();

	// カメラの外枠のスケールをワールド座標系で取得
	float worldScreenHeight=Camera.main.orthographicSize*2f;
	float worldScreenWidth=worldScreenHeight/Screen.height*Screen.width;

	// スプライトのスケールもワールド座標系で取得
	float width  = sr.sprite.bounds.size.x;
	float height = sr.sprite.bounds.size.y;

	//  両者の比率を出してスプライトのローカル座標系に反映
	transform.localScale = new Vector3 (worldScreenWidth / width, worldScreenHeight / height);

	// カメラの中心とスプライトの中心を合わせる
	Vector3 camPos = Camera.main.transform.position;
	camPos.z = 0;
	transform.position = camPos;
}

結果

上のスクリプトを画面にフィットさせたいSpriteにアタッチして実行した結果がこちら。

f:id:nn_hokuson:20160730102601p:plain