2016-03-03 5 views
0

Я создаю уровень массива int. Это код:Неправильная компоновка плитки

using UnityEngine; 
using System.Collections; 

public class Level1 : MonoBehaviour 
{ 
    int[][] level = new int[][] 
    { 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     new int[] { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16} 
    }; 
    public Transform tile00; 
public Transform tile16; 
public Transform tile38; 

int rows = 12; 
int cols = 32; 

void Start() 
{ 

    BuildLevel(); 
} 

void BuildLevel(){ 
    int i, j; 

    GameObject dynamicParent = GameObject.Find ("DynamicObjects"); 
    for(i=0; i<rows; i++) 
    { 
     for(j=0; j<cols; j++) 
     { 
      Transform toCreate = null; 
      Debug.Log (i + " , " + j + " " + level[i][j]); 
      if (level[i][j] == 0) 
       toCreate = tile00; 
      if (level[i][j] == 83) 
       toCreate = tile38;; 
      if (level[i][j] == 16) 
       toCreate = tile16; 

      Vector3 v3 = new Vector3(16-j, 6-i, 0); 
      Transform newObject = Instantiate(toCreate, v3, Quaternion.identity) as Transform; 
      newObject.parent = dynamicParent.transform; 
     } 
    } 
} 
    } 

экран вывод, что, как:

enter image description here

Плитки 50 х 50. Я изменил размеры плиток, я изменил позиции по X и Y Я пробовал все, но не нашел решения. Не могли бы вы дать мне идее, пожалуйста?

Для горизонтальной плитки раскладка я хочу получить является (изображение обрабатывается с краской):

enter image description here

+0

Э-э ... это не совсем понятно, на данный момент, что вы хотите, чтобы ваш код, чтобы сделать - не могли бы вы пояснить, как ты ожидал, что ваша сцена будет следить за запуском вашего кода? В противном случае мы просто угадаем, что здесь может быть неправильно. – Serlite

+0

Пробовал все для решения? Вы даже не указали, какой макет вам нужен. –

+0

@Serlite - Я разместил изображение для макета, который я хочу. –

ответ

0

Наиболее вероятный ответ из этой линии

Vector3 v3 = new Vector3(16-j, 6-i, 0); 

You скажем, что ваши изображения 50 x 50 пикселей каждый. Предполагая, что вы не изменили пиксели на свойства объектов вашего спрайта, это сделало бы каждое из этих изображений занимающим пространство в 0,5 единицы единства на оси X & Y.

Теперь, в ваших расчетах, вот что происходит.


Итерация 1 - (i = 0, j = 0). Position = Vector3 (16, 6, 0)
Итерация 2 - (i = 0, j = 1). Position = Vector3 (15, 6, 0)
...
Итерация 33 - (i = 1, j = 0). Позиция = Vector3 (16, 5, 0)


Теперь, разность значений X между Итерация 1 Итерация 2 & 1 Единство единицы. Ранее мы уже установили, что эти Sprites будут занимать всего 0,5 единицы Unity из-за их размера.
То же самое по оси Y для Итерация 1 & Итерация 33. Разница в 1 единица, причем каждое изображение занимает всего 0,5 единицы.

Таким образом, либо изменить изображение, чтобы быть 100 х 100 точек, или изменить пиксели в единицах

+0

Да. Ты прав. Я меняю пиксели на единицу 50 пикселей и в порядке. благодаря –