Я никогда раньше с вещами типа Unity не игрался. Возможно вопрос
очень глупый.
Здравствуйте.
Никак не могу понять, как же употреблять координаты в Unity 2D (
Orthographic Camera).
Создал пустой 2D проект, сцену, скрипт.
Хочу программно нарисовать объект в левом верхнем углу. Ок. Создал префаб (prefab) на основе спрайта и пишу
опираясь на официальное руководство:
void Start () {
Instantiate(star, new Vector3(0, 0, 0), Quaternion.identity);
}
Вопреки ожиданиям увидеть спрайт в левом верхнем углу, я его наблюдаю по центру экрана... Нууу... Ок.
Идем дальше.
Если я добавлю еще один спрайт и задам ему значение для
y
равным 1
void Start () {
Instantiate(star, new Vector3(0, 0, 0), Quaternion.identity);
Instantiate(star, new Vector3(0, 1, 0), Quaternion.identity);
}
То вполне себе буду желать увидеть его правее от первого спрайта на 1 пиксель.
Но... Нет.
Он будет левее не на 1 пиксель, а на 1 клетку.
Далее я узнал, что высота и ширина камеры измеряются в этих самых "клетках". Нуууу. Ок.
Итак, снова: я хочу нарисовать спрайт в левом верхнем углу экрана.
Камера измеряется в "клетках".... Значит что... Нужно получить размер камеры...
Согласно документации, размер камеры - единственное число:
Camera.main.orthographicSize
Ок. В высоту оно у меня, допустим 8.
Camera.main.orthographicSize
хранит в себе эту самую 8-ку.
А что с шириной? Где ее достать? Не могу найти... Она меняется в зависимости от высоты, если я ее меняю в редакторе.
Видимо не туда копаю? Нууу.. Допустим. Погуглив, нахожу такой вариант:
Instantiate(star, Camera.main.ScreenToWorldPoint(new Vector3(real_x, real_y, 1)), Quaternion.identity);
Более походит на правду... Правда начало координат сместилось в левый нижний угол, а не в верхний, как я ожидал...
В общем... Подскажите пожалуйста, в ту ли степь я копаю и как работают с координатами в Unity 2D?
В итоге хочу сделать игрушку по типу "3 в ряд", где поле с ячейками находится ближе к левому краю экрана.
Спасибо