#unity3d #2d #orthographic
Вопрос:
Как мы можем установить определенный размер единиц измерения для определения ширины орфографического размера камеры в портретном режиме?
Я хочу установить горизонтальный размер на 5 метров точно от центра слева до центра справа экрана для любого мобильного устройства? как я могу этого достичь? Я нашел этот фрагмент кода из видеоклипа, но я его не понимаю и думаю, что это мне не поможет, так как у меня нет игрового поля, а также мой игровой мир будет автоматически создаваться во время игры (это бесконечная 2D-игра с прокруткой).
[SerializeField] private SpriteRenderer gameField;
void Start()
{
float screenRatio = (float)Screen.width / (float)Screen.height;
float targetRatio = gameField.bounds.size.x / gameField.bounds.size.y;
if (screenRatio > targetRatio)
{
Camera.main.orthographicSize = gameField.bounds.size.y / 2;
}
else
{
float differenceInSize = targetRatio / screenRatio;
Camera.main.orthographicSize = gameField.bounds.size.y / 2 * differenceInSize;
}
}
Я не знаю, почему unity не решает эти проблемы автоматически?
Комментарии:
1. Таким образом, вы, по сути, хотите заархивировать, чтобы все игроки на экранах всех размеров видели одну и ту же часть игры?
2. @DanielM, Да и ровно 5 метров.
3. Вы устанавливаете изометрический вид или боковой плоский вид?
4. @joreldraw, простая орфографическая проекция.
Ответ №1:
Я нашел видео, о котором вы говорили, и оно на самом деле довольно простое. Для справки, это это видео. Я постараюсь вам это объяснить.
Эти 5 полей представляют все содержимое, которое вы хотите отобразить на своем экране. Вы хотите, чтобы ваша камера всегда настраивалась так, чтобы она помещалась во все эти коробки внутри нее.
Чтобы заархивировать это, вам нужно умножить ширину наших ящиков (все наши ящики имеют ширину 1 метр во всех измерениях) на высоту экрана, разделенную шириной экрана. Затем вы хотите разделить это число на два.
boxes.width * screen.height / screen.width * 0.5
В нашем коде это выглядит так:
public float sizeInMeters;
void Start()
{
float orthoSize = sizeInMeters * Screen.height / Screen.width * 0.5f;
Camera.main.orthographicSize = orthoSize;
}
Если вы хотите иметь пять метров слева и справа от середины, то введите 10 в sizeInMeters
переменную. Если ваша общая ширина экрана слева направо должна составлять всего 5 метров, вы должны ввести 5 в sizeInMeters
переменную.
if
Внутренняя часть вашего кода доступна только в том случае, если вы хотите, чтобы пользователь мог перевернуть свой телефон в вертикальное положение.
Комментарии:
1. Я проверю твой сценарий