🎥 Постоянная ширина камеры [Unity 3D] [Tutorial]

Как и зачем в юнити настроить камеру на поддержание постоянной ширины при изменении соотношения сторон экрана вместо поведения по умолчанию - поддержанию постоянной высоты. Чтобы при изменении разрешения пользователем, или на разных устройствах с разными размерами экрана ваша игра выглядела корректно
Ссылка на скрипт: gist.github.com/Glavak/ada99b...
Ссылка на улучшенный скрипт в Asset Store: assetstore.unity.com/packages...
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Пікірлер: 102

  • @EmeraldPowder
    @EmeraldPowder Жыл бұрын

    Сделал плагин и загрузил в Asset Store, который позволяет в один клик делать камеру по ширине, и ещё много всего со скейлом камеры. Кому нужно готовое решение - качайте, ассет бесплатный assetstore.unity.com/packages/tools/camera/camera-scaler-228305

  • @fgdfgfvgdfgg5517

    @fgdfgfvgdfgg5517

    Жыл бұрын

    благодарю покорнейше, ты крутой

  • @WeLoveCreatingGames

    @WeLoveCreatingGames

    5 ай бұрын

    Огромное спасибо помог решить проблему) теперь буду изучать скрипт!) если есть возможность может быть уроки сделаешь, где подробнее объяснишь всякие такие фишки,которые упрощают разработку)

  • @user-rr5fx9zm1s
    @user-rr5fx9zm1s4 жыл бұрын

    Мир теперь стал чуть проще

  • @user-rh2gm4gi7l

    @user-rh2gm4gi7l

    3 жыл бұрын

    На 0.0000000000000000000000000000001%

  • @sandjargeldiev3795
    @sandjargeldiev37954 жыл бұрын

    Мужик, только вчера вечером думал как это все нормально провернуть) Спасибо!

  • @crazymax5204
    @crazymax5204 Жыл бұрын

    Чел, огромное человеческое тебе спасибо!!! Ты спас мой школьный проект)

  • @user-sj1mq5xu7h
    @user-sj1mq5xu7h3 жыл бұрын

    Ты даже не представляешь на столько это было полезно ))

  • @VShangeev
    @VShangeev Жыл бұрын

    Спасибо! Перенес для Cinematic работает супер!

  • @qgames3850
    @qgames38504 жыл бұрын

    Спасибо. Полезный скрипт.

  • @user-sj5yu1ff4c
    @user-sj5yu1ff4c4 жыл бұрын

    Без лайка уйти не возможно, ты лучший, просто ctrl + c = ctrl + v и заработало:)

  • @PavloKenor
    @PavloKenor4 жыл бұрын

    Вот за это Большое Спасибо!

  • @hummylisii8237
    @hummylisii82374 жыл бұрын

    Очерь полезно.Спасибо что облегчил нам жизнь.До этого видео я только знал что можно делать подгонку каждаго обэкта и так каждый обэкт.

  • @ChimpanzeeUltra
    @ChimpanzeeUltra2 жыл бұрын

    Как забавно, что я заметил это явление во время одной разработки и написал почти такой же скрипт для камеры :D

  • @user-jx3gn8qy2q
    @user-jx3gn8qy2q Жыл бұрын

    СПАСИБО ОГРОМНОЕ!!!

  • @DemonLevelUp
    @DemonLevelUp3 жыл бұрын

    Ты за неполных 10 минут решил то, что я уже месяц не мог сделать своими силами. Огромное СПАСИБО!!!

  • @payrgames

    @payrgames

    4 ай бұрын

    Жиза

  • @nekto8585
    @nekto85852 жыл бұрын

    крутое видео почему я раньше его не нашел)

  • @andreyas44
    @andreyas442 жыл бұрын

    Спасибо огромное!! Сначала решил написать свой скрипт, а потом вспомнил совет всех программистов "не изобретай велосипед". Загуглил, а тут твоё видео. Ну как всегда, снова полезное! Осталось только скрипт привести в порядок, просто чистота кода страдает) P.s. Бедные с# разработчики, которые все помешаны на красивом коде..)

  • @gagikbalabekyan3639
    @gagikbalabekyan36393 жыл бұрын

    You are the best !Ty bro

  • @aliakseiyarmalchuk7613
    @aliakseiyarmalchuk76134 жыл бұрын

    Не знаю, сколько я искал это решение, в англоязычном интернете. Подмога пришла от туда, от куда не ждали. Огромнео спасибо!

  • @bibyter6451
    @bibyter64513 жыл бұрын

    Молодец, спасибо ;)

  • @user-gd7xf3il5d
    @user-gd7xf3il5d5 ай бұрын

    Спасибо!

  • @pol2997
    @pol299711 ай бұрын

    ТЫ лучший!!!!!!!!!

  • @maxlamborge2734
    @maxlamborge27343 жыл бұрын

    золотой человек

  • @ArmorAndRum
    @ArmorAndRum3 жыл бұрын

    Этот скрипт это лучшее что случилось со мной за этот день) думаю синемашина тоже справилась бы, но скрипт проще.

  • @user-bk1ly4kr6t
    @user-bk1ly4kr6t2 жыл бұрын

    спасибо большое

  • @Eduard02834
    @Eduard028343 жыл бұрын

    prosto pomni ob etom ti spas moyu igru !

  • @Pro1ooPlayer
    @Pro1ooPlayer4 жыл бұрын

    Привет, редко пишу где либо комментарии, но тут не устоять. Просто потрясающие уроки, все четко, понятно, структурировано. Большое спасибо за это. И если принимаются предложения по теме следующих уроков, то: Есть такая старенькая игрушка - Clash of clans, и там интересная сеточная система строительства зданий, объектов и прочего. Было бы интересно увидеть такую же систему строительства по сетке в трехмерном проекте: создание зданий, передвижение построенных зданий, удаление зданий, ничего больше. В интернете, конечно же, есть, что то издали похожее, но либо это устаревшие уроки, либо недоделанные. В общем, хотелось бы увидеть урок с вашей подачей и вашими актуальными знаниями, если это возможно.

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Привет, спасибо! Это которая мобильная Clash Of Clans уже старенькой считается?) Да, в принципе тема интересная, возможно сделаю видео

  • @TV-il2xx
    @TV-il2xx2 жыл бұрын

    2 поставил, от души, Уважаемый

  • @vladon-games
    @vladon-games Жыл бұрын

    У меня нет слов, одни эмоции, ты возможно только что помог мне пройти тз на работу)

  • @maxivantsivgamedev5557
    @maxivantsivgamedev5557 Жыл бұрын

    Гений

  • @neitralov739
    @neitralov7392 жыл бұрын

    Просто гений мысли. Сам скрипт не пригодился, я просто хотел узнать как растянуть BoxCollider2D на всю камеру при разных разрешениях. 31-ая строка направила на верный путь и теперь у меня все хорошо.

  • @inatesi
    @inatesi Жыл бұрын

    👍👍

  • @datodavita1212
    @datodavita12124 жыл бұрын

    molodec krutoi vesh sp :)

  • @RajPolinovsky
    @RajPolinovsky3 жыл бұрын

    Спасибо, код действительно простой и главное работающий. Нашелся один недостаток. Если есть объект который рпзмещен внизу экрана, то при смене разрешения он смещается вверх. Это можно както исправить? Спасибо.

  • @drdrag1867
    @drdrag18674 жыл бұрын

    К одному месту скрипт.... пока... лайк за труды

  • @Douks
    @Douks4 жыл бұрын

    Это типа адаптация под экраны?

  • @masson22
    @masson223 жыл бұрын

    Друг ты лучший. Очень круто обьясняеш! Сколько вообще занимаешься юнити?

  • @EmeraldPowder

    @EmeraldPowder

    3 жыл бұрын

    Спасибо! Года 4, думаю. Но до этого тоже прогал на всяком, и игрушки делать пытался

  • @nikitagorokhov6636
    @nikitagorokhov66364 жыл бұрын

    Привет. Спасибо за контент. Отличные видео. А что насчёт опции Physical Camera. У меня при включённой опции поддерживается как раз ширина. Точнее объект при различных разрешениях экрана одинаково близко к краям экрана. Спасибо. P.S. Лайков поставил и подписался. Такой контент не должен быть на чистом альтруизме,какие реквизиты есть для поддержки канала?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Physical Camera - да, вроде бы тоже может что-то такое делать. Но она я так понял для каких-то странных манипуляций ещё нужна, я когда-то прочитал документацию по ней, и пришёл к выводу что мне эти фичи не понадобятся Думаю завести патреон, когда подумаю что можно предложить тем кто подпишется)

  • @communism8037
    @communism80372 жыл бұрын

    Как можно сделать такой же кружок, который постепенно удаляется либо закрашивается как на 2:33?

  • @kick4313
    @kick43132 жыл бұрын

  • @dimonogen
    @dimonogen4 жыл бұрын

    Ждал ролика про логику тайлов в tilemap, буду ждать дальше. Приходиться делать их просто объектами, а хотелось бы интерактивные тайлы. Продолжение про TileMap хоть вообще выйдет?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Обязательно будет! Вторая часть про hexagonal и что можно сделать из скриптов, а третья скорее всего будет про 2d-extras со всякими хитрыми тайлами

  • @ivanknyazev3138
    @ivanknyazev31384 жыл бұрын

    А изменение в апдейте в демонстрационных целях?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Да, по сути чаще всего эти рассчёты можно перенести в Start. Но например на PC в оконном режиме можно менять разрешение перетаскиванием рамок, или в настройках поменять. На телефоне же в некотрых играх меняется ориентация экрана, это тоже может понадобиться обработать. И ещё мне недавно с этим скриптом нужно было зумить orthographic камеру, я это делал через изменение initialSize, а скрипт сразу в следующем апдейте пересчитывал актуальный size. В общем можно вынести куда-то чтобы чуть меньше вычислений было, но в общем случае оставил в апдейте

  • @Ontonify
    @Ontonify Жыл бұрын

    А как же scale with screen size, math поставить на 0.5, или его раньше не было?

  • @EmeraldPowder

    @EmeraldPowder

    Жыл бұрын

    Это только для canvas работает, а для камеры приходится делать самому скрипт

  • @arttmptt
    @arttmptt4 жыл бұрын

    Я думал об этом не так давно, отложил это на ближе к релизу, и тут прям как рас, крута. Люблю када код пишут за меня)

  • @nurbolo
    @nurbolo4 жыл бұрын

    Спасибо большое! Есть один вопрос, проблема с шириной экрана решилось но теперь появилась другая проблема, например в проекте на камере висит объект в самом низу (земля, когда персонаж касается земли конец игры!), теперь на некоторых устройствах когда ширина экрана подбирается этот объект (земля) поднимается чуть выше, а по сути объект должен был стоять в самом внизу. Как можно это исправить?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Да, камера так же привязывается к центру, и расширяется равномерно вверх-вниз. Тут два варианта, либо двигать камеру вверх, либо землю вниз. Можно просто подвинуть землю, camera.ViewportToWorldPoint(new Vector3(0.5f, 0)) - вернёт точку в мировых координатах, которая в самом низу камеры посередине

  • @nurbolo

    @nurbolo

    4 жыл бұрын

    @@EmeraldPowder ок, камера в проекте двигается только вверх.

  • @skoif402
    @skoif4024 жыл бұрын

    Даров. Можешь сделать урок по новой Input System в юнити? И сделать гайд по 2д управлению для платформеров и т.д? Было бы круто

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Привет. Она же ещё в Preview? Хотел как выйдет окончательно сделать видео. Вообще очень крутая штука, может наконец все интересные игры начнут поддерживать все удобные геймпады

  • @skoif402

    @skoif402

    4 жыл бұрын

    @@EmeraldPowder да в превью но ее можно же опробовать, я пытался чёт сделать но не получилось

  • @user-pd9eq4dq7n
    @user-pd9eq4dq7n4 жыл бұрын

    Один только вопрос. Зачем нужно все это делать в Update? Не проще сделать один раз все расчеты при запуске? Разрешение экрана же не меняется динамически...

  • @oleksandrmartysh85

    @oleksandrmartysh85

    4 жыл бұрын

    Да, и у меня такая же мысль возникла. Когда игра запущена на устройстве, то разрешение экрана уже не будет меняться. Смысл брать в расчёты initial size, если он размер камеры таким и останется? :) Надо публичное поле в инспекторе сделать, куда пользователь скрипта указывает размер, на который надо ориентироваться.

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Да, ответил чуть ниже на этот вопрос. Если разрешение и зум камеры не меняются - можно в start перенести вычисления

  • @lora6938
    @lora69382 жыл бұрын

    А как сделать что бы ни высота ни ширина не менялась, а была всегда фиксированная картинка какая она есть в проекте так и будет выглядеть на любом устройстве. Или что бы вид игры всегда подстраивался сам под любое разрешение без изменений и смещений объектов или UI элементов! Это возможно?

  • @Xiriann

    @Xiriann

    11 ай бұрын

    Поздно отвечаю, но вдруг ещё кому надо, если у вас проблема конкретно в UI, то вам нужно настраивать Canvas и фиксировать ui элементы на экране, тогда при изменении разрешения ваш ui не будет смещаться

  • @user-du1lo7hm3s

    @user-du1lo7hm3s

    9 ай бұрын

    а если нужно что бы именно локация со всем окружением адаптировалась? не канвас, а именно локация с персонажем?@@Xiriann

  • @dicony3427
    @dicony34274 жыл бұрын

    Здравствуйте! У меня подчеркнуто красным orthographicSize в initialSize = componentCamera.orthographicSize; и также подчеркнуто fieldOfView в initialFov = componentCamera.fieldOfView; Вы не знаете в чем может быть проблема? Может нужно подключать директивы дополнительные? Оно горит красным и в юнити из-за этого ошибки и не работает скрипт.

  • @zelderon7195

    @zelderon7195

    2 жыл бұрын

    Та же самая проблема, вы нашли решение?

  • @SpektroDragon

    @SpektroDragon

    Жыл бұрын

    У меня скрипт был с именем Camera из-за чего такое случилось. Если кому-то поможет

  • @vladisslavss
    @vladisslavss2 жыл бұрын

    Каааайф!) Очень хорошее решение. Правда. Почему бы выполнять функции расчёта не в update а в start?

  • @olegkosarev4310

    @olegkosarev4310

    Жыл бұрын

    а если орентация с вертикальной на горизонтальную поменяется считать уже не надо?

  • @anatoliy9696
    @anatoliy96963 жыл бұрын

    Подскажите как переделать под постоянную Screen.heigh ?

  • @EmeraldPowder

    @EmeraldPowder

    3 жыл бұрын

    По умолчанию камера так и работает, что сохраняет высоту. А чтобы на Canvas в интерфейсе работало по высоте ползунок width-height перевести полностью в сторону height

  • @anatoliy9696

    @anatoliy9696

    3 жыл бұрын

    @@EmeraldPowder Спасибо !

  • @user-oh1eg9nz7c
    @user-oh1eg9nz7c4 жыл бұрын

    Самое нормальное решение для камеры которое я увидел в ютубе

  • @willtoliveonline5017
    @willtoliveonline50174 жыл бұрын

    А можно полный туториал по этой игре?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Я её в нескольких видео показывал, но это тоже такой проект, немного недоделанный, хотя у меня на него были некоторые планы, так что думаю лучше новую какую-нибудь игру придумаю и по ней сделаю туториал

  • @hummylisii8237
    @hummylisii82374 жыл бұрын

    А он автоматически будет подстраиваться под разрешение экрана пользователя или нужно создать дополнительную кнопку которая будет менять разрешение а этот скрипт автоматически сработает??Спасибо за такой скрипт)

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Автоматически всегда поддерживает ширину. В случае мобилок это будет работать от девайса к девайсу, чтобы и на длинном Айфоне и на квадратном планшете одинаково была ширина. А на компе если через настройки переключать разрешение то тоже будет подстраиваться

  • @hummylisii8237

    @hummylisii8237

    4 жыл бұрын

    @@EmeraldPowder а если мне нужно соблюдать прапорции обеих сторон ,то лучге будет использовать канвас или в этом скрипте сделать дополнительную настрийку?

  • @jasonxt9702
    @jasonxt97024 жыл бұрын

    Есть проблема, скрипт почему-то не работает. Я закинул скрипт на камеру и за место того, чтоб менять ширину, он по стандарту , меняет высоту. В коде ничего не менял, у камеры название MainCamera и такой же тэг, у камеры стоит тип ортаграфик, что делать?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Название и тег влиять не должны, точно всё включео, и в консоли ошибок никаких нет?

  • @jasonxt9702

    @jasonxt9702

    4 жыл бұрын

    @@EmeraldPowder да и ошибок то же нет

  • @skymaster__
    @skymaster__3 жыл бұрын

    Неужели в самом юнити в настройках нет способа изменения статичной высоты на статичную ширину при скейлинге? 2021 год как бы, даже не верится, если честно, что подобное можно сделать только через костыль(скрипт)

  • @EmeraldPowder

    @EmeraldPowder

    3 жыл бұрын

    Там есть physical camera, но она не для этого создана, там какие-то ещё физические параметры. Но вообще такой скриптик иметь из коробки было бы полезно, не знаю почему они такое не включили

  • @bogotoff
    @bogotoff4 жыл бұрын

    Вроде в новой версии юнити можно указывать горизонтальный FOV у камеры вместо вертикального. И скрипты не нужно писать ;)

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    В 2019.2? Я с ней пока плотно не разбирался, но круто если можно, спасибо!

  • @user-ey9is8kd6i

    @user-ey9is8kd6i

    4 жыл бұрын

    там только у перспективной камеры, у ортографической нет такой возможности

  • @Eduard02834
    @Eduard028343 жыл бұрын

    ++++

  • @brossinger
    @brossinger4 жыл бұрын

    Классный скрипт но у меня почему на отрабатывает. Можно в личке пообщатся?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Пиши в Дискорд, помогу чем смогу

  • @Eduard02834
    @Eduard028343 жыл бұрын

    +++

  • @alex2d324
    @alex2d3244 жыл бұрын

    Спасибо Вам огромное за Ваши видео-уроки!!! :) /*далее тихонечко, мелким-мелим шрифтом, шёпотом - но, всё-таки он не "канвАс", а "кАнвас"... ну точнее там не "а", но ударение все же тут, на первом слоге... это конечно очень мелкая мелочь в сравнении со всем контентом видео, но, блин, как же оно режет слух... %( извините */

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Пожалуйста! Да, с этими английскими словами среди русской речи сложно, спасибо что отметили, буду стараться правильно говорить)

  • @vg5947
    @vg59474 жыл бұрын

    На расширение по сторонам окей, а че не доделать все до ума по поводу скайбокса я про 2д, сверху серые линии как бы) экраны нынче и 19на9 есть) и сверху такие полоски не круть, да конечно там баннер воткнуть можно, но все же, снизу или сверху останется полоска

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    А откуда полоски берутся, не совсем понял? При использовании обычного скайбокса юнитиевского?

  • @vg5947

    @vg5947

    4 жыл бұрын

    @@EmeraldPowder ну сверху и снизу полоски на видео, я про это спрашиваю

  • @gooddark3663

    @gooddark3663

    4 жыл бұрын

    @@vg5947 в самой игре их не будет

  • @stikulzon801
    @stikulzon8014 жыл бұрын

    Вот я посмотрел это видео - kzread.info/dash/bejne/gKxnwdCRaLjVfdI.html , и у меня есть вопрос, можно ли это использовать в unity?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Использовать - не уверен, но сделать такое конечно же можно, закрашивая пиксели на текстуре, или просто спауня объекты. А вообще некоторые любители разные фракталы шейдерами рисуют, например тут www.shadertoy.com/results?query=fractal

  • @vyacheslav6620
    @vyacheslav66203 ай бұрын

    блин почему нельзя встроить это в юнити..

  • @1stmakarenko
    @1stmakarenko4 жыл бұрын

    Профайлер

  • @EmiZak-pf2uz
    @EmiZak-pf2uz4 ай бұрын

    Ты можешь нормально объяснить ничего не понятно

  • @Eduard02834
    @Eduard028343 жыл бұрын

    +++++

Келесі