2017-02-06 8 views
0

Я только начал играть с единством. Тем не менее, я не соображал вокруг системы координат. Я читал различные вопросы/ответы, документы, смотрел учебники. Когда я читаю документы, мировые, видовые и экранные координаторы имеют смысл. Однако, когда я пытаюсь использовать их, результаты для меня совершенно неожиданны. Это заставляет меня думать, что мне не хватает чего-то принципиально важного. Кто-нибудь поможет мне, пожалуйста?Невозможно разместить спрайт в левом нижнем углу

Вот что я пытаюсь сделать. Я пытаюсь построить игру, в которой будет X количество штук на доске размером MxN. Я хотел бы разместить фрагменты ПРОГРАММА. Итак, я ожидаю увидеть кусок в левом нижнем углу, когда я положу кусок на (0,0) координаты экрана. Но, к моему удивлению, кусок попадает примерно в центр доски. Я не мог понять, почему.

Вот мой код:

Vector3 BottomLeft = new Vector3 (0, 0, 0); 
GameObject token = Prefabs[0]; 
GameObject go = Instantiate (token, BottomLeft , Quaternion.identity); 
SpriteRenderer renderer = go.GetComponent<SpriteRenderer>(); 
renderer.sortingLayerName = "Foreground"; 
renderer.sortingOrder = 0; 

И ниже выводится из приведенного выше кода:

enter image description here

Как можно видеть, что часть находится в центре. Мне хорошо известно, что я не «нормализовал» координаты. Ниже версия кода преобразует точки экрана в мировой системе координат:

Vector3 BottomLeft = new Vector3 (0, 0, 0); 
GameObject token = Prefabs[0]; 
GameObject go = Instantiate (token, Camera.main.ScreenToWorldPoint(BottomLeft), Quaternion.identity); 
SpriteRenderer renderer = go.GetComponent<SpriteRenderer>(); 
renderer.sortingLayerName = "Foreground"; 
renderer.sortingOrder = 0; 

Но результат все еще немного похож на первый, хотя часть слегка помещается влево и вниз.

enter image description here

Я ожидал кусок быть помещен, что левый нижний угол, но это не так. Что я делаю не так ?

Заранее спасибо.

EDIT:

Ниже настройки по умолчанию для кулачка я использую:

enter image description here

Я также попытался установить его в коде, в методе запуска следующим образом: (пожалуйста, не что я попытался либо линии, а результат все тот же: [)

//  defaultCamera.transform.position = defaultCamera.ScreenToWorldPoint(new Vector3 (Screen.width/2f, Screen.height/2f, 0f)); 
//  defaultCamera.transform.position = defaultCamera.ScreenToWorldPoint(new Vector3 (-Screen.width/2f, -Screen.height/2f, 0f)); 
     //defaultCamera.transform.position = new Vector3 (-Screen.width/2f, -Screen.height/2f, -10f); 
     defaultCamera.transform.position = new Vector3 (0f, 0f, -10f); 

ответ

0

Я думаю, что ваша плитка правильно установлен, но камера н ВЗ.

По умолчанию камера расположена так, что центр системы координат находится в центре экрана. Попытайтесь изменить положение камеры (либо программно в методе запуска, либо просто через единицу GUI)

Надеюсь, это помогло. :)

+0

Спасибо за ваш ответ @Apfelbox. Я попробовал то, что вы предложили, но все равно не повезло. Камера расположена на (0,0, -10). Мой игровой режим установлен в 1080x1920. Если это так, то какие нижние левые координаты? (0,0)? или (-screen.width/2, -screen.height/2)? – Alp

+0

Я сейчас не на своем компьютере (там, где установлено единство). Когда я нахожусь дома через пару часов, и ваша проблема все еще не решена, я еще раз посмотрю на этот вопрос - тем временем удачи – Apfelbox

+0

Большое спасибо .. Я ценю это :) – Alp

Смежные вопросы