🎥 Постоянная ширина камеры [Unity 3D] [Tutorial]
Как и зачем в юнити настроить камеру на поддержание постоянной ширины при изменении соотношения сторон экрана вместо поведения по умолчанию - поддержанию постоянной высоты. Чтобы при изменении разрешения пользователем, или на разных устройствах с разными размерами экрана ваша игра выглядела корректно
Ссылка на скрипт: gist.github.com/Glavak/ada99b...
Ссылка на улучшенный скрипт в Asset Store: assetstore.unity.com/packages...
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео
Пікірлер: 102
Сделал плагин и загрузил в Asset Store, который позволяет в один клик делать камеру по ширине, и ещё много всего со скейлом камеры. Кому нужно готовое решение - качайте, ассет бесплатный assetstore.unity.com/packages/tools/camera/camera-scaler-228305
@fgdfgfvgdfgg5517
Жыл бұрын
благодарю покорнейше, ты крутой
@WeLoveCreatingGames
5 ай бұрын
Огромное спасибо помог решить проблему) теперь буду изучать скрипт!) если есть возможность может быть уроки сделаешь, где подробнее объяснишь всякие такие фишки,которые упрощают разработку)
Мир теперь стал чуть проще
@user-rh2gm4gi7l
3 жыл бұрын
На 0.0000000000000000000000000000001%
Мужик, только вчера вечером думал как это все нормально провернуть) Спасибо!
Чел, огромное человеческое тебе спасибо!!! Ты спас мой школьный проект)
Ты даже не представляешь на столько это было полезно ))
Спасибо! Перенес для Cinematic работает супер!
Спасибо. Полезный скрипт.
Без лайка уйти не возможно, ты лучший, просто ctrl + c = ctrl + v и заработало:)
Вот за это Большое Спасибо!
Очерь полезно.Спасибо что облегчил нам жизнь.До этого видео я только знал что можно делать подгонку каждаго обэкта и так каждый обэкт.
Как забавно, что я заметил это явление во время одной разработки и написал почти такой же скрипт для камеры :D
СПАСИБО ОГРОМНОЕ!!!
Ты за неполных 10 минут решил то, что я уже месяц не мог сделать своими силами. Огромное СПАСИБО!!!
@payrgames
4 ай бұрын
Жиза
крутое видео почему я раньше его не нашел)
Спасибо огромное!! Сначала решил написать свой скрипт, а потом вспомнил совет всех программистов "не изобретай велосипед". Загуглил, а тут твоё видео. Ну как всегда, снова полезное! Осталось только скрипт привести в порядок, просто чистота кода страдает) P.s. Бедные с# разработчики, которые все помешаны на красивом коде..)
You are the best !Ty bro
Не знаю, сколько я искал это решение, в англоязычном интернете. Подмога пришла от туда, от куда не ждали. Огромнео спасибо!
Молодец, спасибо ;)
Спасибо!
ТЫ лучший!!!!!!!!!
золотой человек
Этот скрипт это лучшее что случилось со мной за этот день) думаю синемашина тоже справилась бы, но скрипт проще.
спасибо большое
prosto pomni ob etom ti spas moyu igru !
Привет, редко пишу где либо комментарии, но тут не устоять. Просто потрясающие уроки, все четко, понятно, структурировано. Большое спасибо за это. И если принимаются предложения по теме следующих уроков, то: Есть такая старенькая игрушка - Clash of clans, и там интересная сеточная система строительства зданий, объектов и прочего. Было бы интересно увидеть такую же систему строительства по сетке в трехмерном проекте: создание зданий, передвижение построенных зданий, удаление зданий, ничего больше. В интернете, конечно же, есть, что то издали похожее, но либо это устаревшие уроки, либо недоделанные. В общем, хотелось бы увидеть урок с вашей подачей и вашими актуальными знаниями, если это возможно.
@EmeraldPowder
4 жыл бұрын
Привет, спасибо! Это которая мобильная Clash Of Clans уже старенькой считается?) Да, в принципе тема интересная, возможно сделаю видео
2 поставил, от души, Уважаемый
У меня нет слов, одни эмоции, ты возможно только что помог мне пройти тз на работу)
Гений
Просто гений мысли. Сам скрипт не пригодился, я просто хотел узнать как растянуть BoxCollider2D на всю камеру при разных разрешениях. 31-ая строка направила на верный путь и теперь у меня все хорошо.
👍👍
molodec krutoi vesh sp :)
Спасибо, код действительно простой и главное работающий. Нашелся один недостаток. Если есть объект который рпзмещен внизу экрана, то при смене разрешения он смещается вверх. Это можно както исправить? Спасибо.
К одному месту скрипт.... пока... лайк за труды
Это типа адаптация под экраны?
Друг ты лучший. Очень круто обьясняеш! Сколько вообще занимаешься юнити?
@EmeraldPowder
3 жыл бұрын
Спасибо! Года 4, думаю. Но до этого тоже прогал на всяком, и игрушки делать пытался
Привет. Спасибо за контент. Отличные видео. А что насчёт опции Physical Camera. У меня при включённой опции поддерживается как раз ширина. Точнее объект при различных разрешениях экрана одинаково близко к краям экрана. Спасибо. P.S. Лайков поставил и подписался. Такой контент не должен быть на чистом альтруизме,какие реквизиты есть для поддержки канала?
@EmeraldPowder
4 жыл бұрын
Physical Camera - да, вроде бы тоже может что-то такое делать. Но она я так понял для каких-то странных манипуляций ещё нужна, я когда-то прочитал документацию по ней, и пришёл к выводу что мне эти фичи не понадобятся Думаю завести патреон, когда подумаю что можно предложить тем кто подпишется)
Как можно сделать такой же кружок, который постепенно удаляется либо закрашивается как на 2:33?
Ждал ролика про логику тайлов в tilemap, буду ждать дальше. Приходиться делать их просто объектами, а хотелось бы интерактивные тайлы. Продолжение про TileMap хоть вообще выйдет?
@EmeraldPowder
4 жыл бұрын
Обязательно будет! Вторая часть про hexagonal и что можно сделать из скриптов, а третья скорее всего будет про 2d-extras со всякими хитрыми тайлами
А изменение в апдейте в демонстрационных целях?
@EmeraldPowder
4 жыл бұрын
Да, по сути чаще всего эти рассчёты можно перенести в Start. Но например на PC в оконном режиме можно менять разрешение перетаскиванием рамок, или в настройках поменять. На телефоне же в некотрых играх меняется ориентация экрана, это тоже может понадобиться обработать. И ещё мне недавно с этим скриптом нужно было зумить orthographic камеру, я это делал через изменение initialSize, а скрипт сразу в следующем апдейте пересчитывал актуальный size. В общем можно вынести куда-то чтобы чуть меньше вычислений было, но в общем случае оставил в апдейте
А как же scale with screen size, math поставить на 0.5, или его раньше не было?
@EmeraldPowder
Жыл бұрын
Это только для canvas работает, а для камеры приходится делать самому скрипт
Я думал об этом не так давно, отложил это на ближе к релизу, и тут прям как рас, крута. Люблю када код пишут за меня)
Спасибо большое! Есть один вопрос, проблема с шириной экрана решилось но теперь появилась другая проблема, например в проекте на камере висит объект в самом низу (земля, когда персонаж касается земли конец игры!), теперь на некоторых устройствах когда ширина экрана подбирается этот объект (земля) поднимается чуть выше, а по сути объект должен был стоять в самом внизу. Как можно это исправить?
@EmeraldPowder
4 жыл бұрын
Да, камера так же привязывается к центру, и расширяется равномерно вверх-вниз. Тут два варианта, либо двигать камеру вверх, либо землю вниз. Можно просто подвинуть землю, camera.ViewportToWorldPoint(new Vector3(0.5f, 0)) - вернёт точку в мировых координатах, которая в самом низу камеры посередине
@nurbolo
4 жыл бұрын
@@EmeraldPowder ок, камера в проекте двигается только вверх.
Даров. Можешь сделать урок по новой Input System в юнити? И сделать гайд по 2д управлению для платформеров и т.д? Было бы круто
@EmeraldPowder
4 жыл бұрын
Привет. Она же ещё в Preview? Хотел как выйдет окончательно сделать видео. Вообще очень крутая штука, может наконец все интересные игры начнут поддерживать все удобные геймпады
@skoif402
4 жыл бұрын
@@EmeraldPowder да в превью но ее можно же опробовать, я пытался чёт сделать но не получилось
Один только вопрос. Зачем нужно все это делать в Update? Не проще сделать один раз все расчеты при запуске? Разрешение экрана же не меняется динамически...
@oleksandrmartysh85
4 жыл бұрын
Да, и у меня такая же мысль возникла. Когда игра запущена на устройстве, то разрешение экрана уже не будет меняться. Смысл брать в расчёты initial size, если он размер камеры таким и останется? :) Надо публичное поле в инспекторе сделать, куда пользователь скрипта указывает размер, на который надо ориентироваться.
@EmeraldPowder
4 жыл бұрын
Да, ответил чуть ниже на этот вопрос. Если разрешение и зум камеры не меняются - можно в start перенести вычисления
А как сделать что бы ни высота ни ширина не менялась, а была всегда фиксированная картинка какая она есть в проекте так и будет выглядеть на любом устройстве. Или что бы вид игры всегда подстраивался сам под любое разрешение без изменений и смещений объектов или UI элементов! Это возможно?
@Xiriann
11 ай бұрын
Поздно отвечаю, но вдруг ещё кому надо, если у вас проблема конкретно в UI, то вам нужно настраивать Canvas и фиксировать ui элементы на экране, тогда при изменении разрешения ваш ui не будет смещаться
@user-du1lo7hm3s
9 ай бұрын
а если нужно что бы именно локация со всем окружением адаптировалась? не канвас, а именно локация с персонажем?@@Xiriann
Здравствуйте! У меня подчеркнуто красным orthographicSize в initialSize = componentCamera.orthographicSize; и также подчеркнуто fieldOfView в initialFov = componentCamera.fieldOfView; Вы не знаете в чем может быть проблема? Может нужно подключать директивы дополнительные? Оно горит красным и в юнити из-за этого ошибки и не работает скрипт.
@zelderon7195
2 жыл бұрын
Та же самая проблема, вы нашли решение?
@SpektroDragon
Жыл бұрын
У меня скрипт был с именем Camera из-за чего такое случилось. Если кому-то поможет
Каааайф!) Очень хорошее решение. Правда. Почему бы выполнять функции расчёта не в update а в start?
@olegkosarev4310
Жыл бұрын
а если орентация с вертикальной на горизонтальную поменяется считать уже не надо?
Подскажите как переделать под постоянную Screen.heigh ?
@EmeraldPowder
3 жыл бұрын
По умолчанию камера так и работает, что сохраняет высоту. А чтобы на Canvas в интерфейсе работало по высоте ползунок width-height перевести полностью в сторону height
@anatoliy9696
3 жыл бұрын
@@EmeraldPowder Спасибо !
Самое нормальное решение для камеры которое я увидел в ютубе
А можно полный туториал по этой игре?
@EmeraldPowder
4 жыл бұрын
Я её в нескольких видео показывал, но это тоже такой проект, немного недоделанный, хотя у меня на него были некоторые планы, так что думаю лучше новую какую-нибудь игру придумаю и по ней сделаю туториал
А он автоматически будет подстраиваться под разрешение экрана пользователя или нужно создать дополнительную кнопку которая будет менять разрешение а этот скрипт автоматически сработает??Спасибо за такой скрипт)
@EmeraldPowder
4 жыл бұрын
Автоматически всегда поддерживает ширину. В случае мобилок это будет работать от девайса к девайсу, чтобы и на длинном Айфоне и на квадратном планшете одинаково была ширина. А на компе если через настройки переключать разрешение то тоже будет подстраиваться
@hummylisii8237
4 жыл бұрын
@@EmeraldPowder а если мне нужно соблюдать прапорции обеих сторон ,то лучге будет использовать канвас или в этом скрипте сделать дополнительную настрийку?
Есть проблема, скрипт почему-то не работает. Я закинул скрипт на камеру и за место того, чтоб менять ширину, он по стандарту , меняет высоту. В коде ничего не менял, у камеры название MainCamera и такой же тэг, у камеры стоит тип ортаграфик, что делать?
@EmeraldPowder
4 жыл бұрын
Название и тег влиять не должны, точно всё включео, и в консоли ошибок никаких нет?
@jasonxt9702
4 жыл бұрын
@@EmeraldPowder да и ошибок то же нет
Неужели в самом юнити в настройках нет способа изменения статичной высоты на статичную ширину при скейлинге? 2021 год как бы, даже не верится, если честно, что подобное можно сделать только через костыль(скрипт)
@EmeraldPowder
3 жыл бұрын
Там есть physical camera, но она не для этого создана, там какие-то ещё физические параметры. Но вообще такой скриптик иметь из коробки было бы полезно, не знаю почему они такое не включили
Вроде в новой версии юнити можно указывать горизонтальный FOV у камеры вместо вертикального. И скрипты не нужно писать ;)
@EmeraldPowder
4 жыл бұрын
В 2019.2? Я с ней пока плотно не разбирался, но круто если можно, спасибо!
@user-ey9is8kd6i
4 жыл бұрын
там только у перспективной камеры, у ортографической нет такой возможности
++++
Классный скрипт но у меня почему на отрабатывает. Можно в личке пообщатся?
@EmeraldPowder
4 жыл бұрын
Пиши в Дискорд, помогу чем смогу
+++
Спасибо Вам огромное за Ваши видео-уроки!!! :) /*далее тихонечко, мелким-мелим шрифтом, шёпотом - но, всё-таки он не "канвАс", а "кАнвас"... ну точнее там не "а", но ударение все же тут, на первом слоге... это конечно очень мелкая мелочь в сравнении со всем контентом видео, но, блин, как же оно режет слух... %( извините */
@EmeraldPowder
4 жыл бұрын
Пожалуйста! Да, с этими английскими словами среди русской речи сложно, спасибо что отметили, буду стараться правильно говорить)
На расширение по сторонам окей, а че не доделать все до ума по поводу скайбокса я про 2д, сверху серые линии как бы) экраны нынче и 19на9 есть) и сверху такие полоски не круть, да конечно там баннер воткнуть можно, но все же, снизу или сверху останется полоска
@EmeraldPowder
4 жыл бұрын
А откуда полоски берутся, не совсем понял? При использовании обычного скайбокса юнитиевского?
@vg5947
4 жыл бұрын
@@EmeraldPowder ну сверху и снизу полоски на видео, я про это спрашиваю
@gooddark3663
4 жыл бұрын
@@vg5947 в самой игре их не будет
Вот я посмотрел это видео - kzread.info/dash/bejne/gKxnwdCRaLjVfdI.html , и у меня есть вопрос, можно ли это использовать в unity?
@EmeraldPowder
4 жыл бұрын
Использовать - не уверен, но сделать такое конечно же можно, закрашивая пиксели на текстуре, или просто спауня объекты. А вообще некоторые любители разные фракталы шейдерами рисуют, например тут www.shadertoy.com/results?query=fractal
блин почему нельзя встроить это в юнити..
Профайлер
Ты можешь нормально объяснить ничего не понятно
+++++