Я только начал играть с единством. Тем не менее, я не соображал вокруг системы координат. Я читал различные вопросы/ответы, документы, смотрел учебники. Когда я читаю документы, мировые, видовые и экранные координаторы имеют смысл. Однако, когда я пытаюсь использовать их, результаты для меня совершенно неожиданны. Это заставляет меня думать, что мне не хватает чего-то принципиально важного. Кто-нибудь поможет мне, пожалуйста?Невозможно разместить спрайт в левом нижнем углу
Вот что я пытаюсь сделать. Я пытаюсь построить игру, в которой будет 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;
И ниже выводится из приведенного выше кода:
Как можно видеть, что часть находится в центре. Мне хорошо известно, что я не «нормализовал» координаты. Ниже версия кода преобразует точки экрана в мировой системе координат:
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;
Но результат все еще немного похож на первый, хотя часть слегка помещается влево и вниз.
Я ожидал кусок быть помещен, что левый нижний угол, но это не так. Что я делаю не так ?
Заранее спасибо.
EDIT:
Ниже настройки по умолчанию для кулачка я использую:
Я также попытался установить его в коде, в методе запуска следующим образом: (пожалуйста, не что я попытался либо линии, а результат все тот же: [)
// 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);
Спасибо за ваш ответ @Apfelbox. Я попробовал то, что вы предложили, но все равно не повезло. Камера расположена на (0,0, -10). Мой игровой режим установлен в 1080x1920. Если это так, то какие нижние левые координаты? (0,0)? или (-screen.width/2, -screen.height/2)? – Alp
Я сейчас не на своем компьютере (там, где установлено единство). Когда я нахожусь дома через пару часов, и ваша проблема все еще не решена, я еще раз посмотрю на этот вопрос - тем временем удачи – Apfelbox
Большое спасибо .. Я ценю это :) – Alp