識ログ

超絶プログラミング初心者のUnity開発備忘録

【Unity】クォータービューの実装 ①MapLoader編

クォータービューの実装に手こずったので自分用に記録。

①MapLoader.cs
このスクリプトでは背景(壁と床)の描画のみ行う。

以下スクリプトの記述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MapLoader : MonoBehaviour {

	public GameObject[] floor1; //1階の地面と壁
	//public GameObject[] floor2; //2階の地面(使う場合のみ)

	private float beginx = 0.0f; //x方向に配置し始める最初の座標
	private float beginy = 0.0f; //y方向に配置し始める最初の座標

	//1階の壁と地面のチップを決める
	public int[][] floor1_Array = new int[][]{
		new int[]{1,2,2,2,2,3,2,2,4}, //右上から左下に向かって並べていく
		new int[]{5,6,7,7,7,7,8,7,7,9}, 
		new int[]{10,5,6,7,7,7,7,8,7,7,9},
		new int[]{10,10,5,11,11,11,11,11,12,7,7,9},
		new int[]{10,10,10,13,14,14,14,14,14,14,14,14,15},
		new int[]{10,10,10,16,17,17,17,17,17,17,17,17,17},
		new int[]{18,10,10,16,17,17,17,17,17,17,17,17,17},
		new int[]{0,18,10,16,17,17,17,17,17,17,17,17,17},
		new int[]{0,0,18,16,17,17,17,17,17,17,17,17,17},
		new int[]{0,0,0,19,17,17,17,17,17,17,17,17,17},
		new int[]{0,0,0,0,20,20,20,20,20,20,17,17,20},
	};

	/*2階の地面のチップを決める(使う場合のみ)
	public int[][] floor2_Array = new int[][]{
		new int[]{0,0},
	};
	*/



	// Use this for initialization
	void Start () {

		int loop_num = 1; //ループ回数

		float rendax = beginx;
		float renday = beginy;

		//floor1とwallの描画
		foreach (int[] array in floor1_Array) {

			foreach (int s in array) {
				
				if(s !=0) //0の場合は何も描画しない
					Instantiate (floor1[s], new Vector3 (rendax, renday, 0), Quaternion.identity);
				
				rendax = rendax - 1.28f;
				renday = renday - 0.64f;
			}
				
			rendax = beginx + 1.28f * loop_num;
			renday = beginy - 0.64f * loop_num;
			loop_num++;
		}
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

マップチップのサイズは横64px縦32pxだけど、2倍の大きさにしているので1.28f, 0.64fずつ左下にずらして描画を行う。
f:id:shiki4020:20170513004844p:plain