Ответ 1
В Unity есть три системы координат: координаты экрана, координаты координат и мировые координаты.
Мировые координаты. Подумайте об абсолютном позиционировании объектов в вашей сцене, используя "точки". Вы можете выбрать, чтобы единицы отображали любую нужную длину, например 1 единица = 10 метров. То, что на самом деле отображается на экране, определяется тем, где находится камера и как она ориентирована.
Координаты просмотра. Координаты в окне просмотра данной камеры. Viewport - это воображаемый прямоугольник, через который просматривается мир. Эти координаты являются порпорными и варьируются от (0,0) до (1,1).
Координаты экрана: фактические координаты пикселей, обозначающие позицию на экране устройства.
Обратите внимание, что мировые координаты любого данного объекта всегда будут одинаковыми независимо от того, какая камера используется для просмотра, тогда как координаты вида зависят от используемой камеры. Координаты экрана дополнительно зависят от разрешения устройства и расположения камеры на экране.
Объект "Камера" предоставляет несколько методов для преобразования между этими различными системами координат, такими как "ScreenToViewportPoint", "ScreenToWorldPoint" и т.д.
Пример: поместите объект в верхнем левом углу экрана
float distanceFromCamera = 10.0f;
Vector3 pos = Camera.main.ScreenToWorldPoint (new Vector3 (0, Screen.height, distanceFromCamera));
transform.position = pos;
Функция ScreenToWorldPoint
принимает вектор Vector3 в качестве аргумента, где x и y обозначают положение пикселя на экране (0,0 слева внизу), а компонент z обозначает желаемое расстояние от камеры. Бесконечное количество трехмерных местоположений может отображаться на одну и ту же позицию экрана, поэтому вам необходимо предоставить это значение.
Просто убедитесь, что желаемое положение попадает в область отсечения камеры. Кроме того, вам может понадобиться выбрать подходящую точку поворота для вашего объекта в зависимости от того, какая часть вашего объекта вы хотите сосредоточить в левом верхнем углу.