Система смены дня и ночи [Unity 3D] [Tutorial] (С луной и звёздами)

Поділитися
Вставка
  • Опубліковано 20 вер 2024
  • Во многих играх присутствует система смены дня и ночи. Она придаёт реализма игровому миру, и добавляет возможность введения интересных механик. В этом видео я покажу как добавить смену дня и ночи в игру на Unity 3D. Вы также можете скачать готовый проект, чтобы разобраться подробнее
    Ссылка на готовый проект: github.com/eme...
    На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
    Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

КОМЕНТАРІ • 89

  • @gandalfthew439
    @gandalfthew439 Рік тому +7

    I've searched all over youtube but I couldn't find a video that is as clear and beautiful as yours. I don't even know russian😄

  • @dynam1k463
    @dynam1k463 Рік тому +4

    Спасибо за урок, добавил смену дня и ночи в прототип майна, про который Вы сейчас снимаете видео-курс) Очень классно и просто получилось!

    • @KrutaMan
      @KrutaMan Рік тому +1

      а баги из туториала пофиксил?)

  • @SHILY-PROJECT
    @SHILY-PROJECT 4 роки тому +5

    Черт, как же это круто всё!

  • @Mr.Epsilion
    @Mr.Epsilion 4 роки тому +3

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

    • @NickProkhorenko
      @NickProkhorenko 3 роки тому +1

      Ну это типа надо прописать, что если например прошло 40 дней, то выполняется команда смены суток(то есть меняется освещение, цвет неба, осадки какие нибудь добавляются). Это вроде не сложно должно быть. Сам скоро буду времена года настраивать.

    • @valera_kardan
      @valera_kardan 2 роки тому

      @@NickProkhorenko По итогу получилось?

    • @magistr3001
      @magistr3001 Рік тому

      @@valera_kardan конечно

  • @HNXYEK228
    @HNXYEK228 Місяць тому

    Если у вас не меняется скайбокс, тогда поставьте в окошке lighting дефолтный скайбокс, мне помогло

  • @ЮринПавел
    @ЮринПавел Рік тому +1

    Очень круто!

  • @dmitryzh3344
    @dmitryzh3344 4 місяці тому

    Ребят, у кого смена skybox происходит всего один раз, а после он остается неизменным вне зависимости от времени суток, то это потому, что один skybox приобретает свойства другого. Чтобы этого избежать: создайте 3-й skybox, который вы выставите в настройках освещения (ночной, дневной он или еще какой - не важно, его всего равно изменит скрипт на нужный, или точнее сказать, изменит его параметры), а другие два, которые вы создали для дня и для ночи, назначьте в скрипте, как и в видео. Таким образом у нас выставлен в настройках skybox, параметры которого мы изменяем на дневные или ночные через скрипт.

  • @GROZA_017
    @GROZA_017 Рік тому +6

    поставил DayDuration на 1 и перезапустил вселенную...

  • @BORNIS
    @BORNIS 7 місяців тому

    Класс, супер гайд, спасибо!

  • @akstis4183
    @akstis4183 4 роки тому +1

    Просто и офигенно

  • @vasyljrorshak7455
    @vasyljrorshak7455 2 роки тому +5

    Ты конечно сделал интересную штуку, но библиотеку DynamicGI.UpdateEnvironment(); обновлять в апдейте это просто сатанизм смешанный с алкоголизмом. Обязательно вынести это в корутину или куда еще, точно не в апдейт. Это очень тяжелый вызов. Разница составила около 20 фпс. На фх8300 это 0.5 проц времени. Я выставил повтор на 0.2 сек в корутине и оно плавно все работает. По тяжести можна сравнить с водой преломляющей свет ростянутой на 100 км

  • @mrgoodpeople
    @mrgoodpeople 6 місяців тому

    Кстати можно сделать апдейт этого видео и добавить движение звёзд на небе (а то Солнце двигается, а звёзды нет) и если уж совсем извратиться, то ещё и смену фаз луны.

  • @aleksandercross5936
    @aleksandercross5936 3 роки тому +4

    У меня почему то "Звёзды" на определённом расстояни стают черными. Выблизи цвет который я указал. Странно.
    Проверил в другом проекте всё норм....
    Короче это из-за тумана

  • @AeternaQuiris
    @AeternaQuiris 3 роки тому +3

    Спасибо за видео!), но возник вопрос: с URP (Universal Render Pipeline) рендером манёвр с DinamicGI ( DynamicGI.UpdateEnvironment() ) является невозможным? Буду оочень рад если получу ответ :D

  • @АрсенийСкобелин-о9ь
    @АрсенийСкобелин-о9ь 5 років тому +7

    Спасибо за хороший урок, подача хорошая и информация полезная . Когда я попытался запустить игру, столкнулся с той же проблемой что и DANYLOV - баг с skybox`om. Как можно исправить этот баг?

    • @EmeraldPowder
      @EmeraldPowder  5 років тому +8

      Там надо установить в окошке настроек освещения, которое LIghting, где выбирается дефолтный скайбокс, не дневной или ночной, а какой-нибудь третий. Чтобы скрипт этот третий менял, а те два не трогал. Можно вроде бы и default-skybox оставить, если с ним работает

  • @NickProkhorenko
    @NickProkhorenko 3 роки тому +3

    Сделал все точь в точь как у тебя, но работает странно, Солнце с Луной меняются, а skybox нет, но код с гравиюфиками правильный . Что делать?

  • @dimonsamarenkov
    @dimonsamarenkov 5 років тому +4

    Хорошие уроки)) Продолжай в том же духе;)

  • @Bond007in
    @Bond007in 5 років тому +3

    СПАСИБО

  • @Funware
    @Funware 4 роки тому +15

    Приветствую, как можно сделать смену дня и ночи уже в 2д пространстве?

    • @рикардо-ц1у
      @рикардо-ц1у 2 роки тому

      никак, там столько танцев с бубном

    • @olegggames6409
      @olegggames6409 2 роки тому +1

      С интенсивностью помучаться, я прямо сейчас это и делаю

  • @WiseDemone75
    @WiseDemone75 Рік тому +1

    всё классно ,только у меня не получилось сделать смену скай боксов ,можешь пожалуйста скинуть твой код ,я просто не смог скачать проект, я подписан!🙏🙏🙏🙏

  • @GlebMatyushev
    @GlebMatyushev Рік тому +1

    Доброго времени суток, я конечно вовремя подошёл) Не подскажешь, что менять, чтобы после захода солнца, луна тоже плавно выходила из-за горизонта, а не сразу оказывалась высоко (когда луна заходит например, там все красиво с солнцем)

    • @ПолинаКузнецова-к4м
      @ПолинаКузнецова-к4м Рік тому

      Нужно поправить кривую скайбокса так, чтобы все время, пока должна существовать луна, значение было 0

  • @m1niclip637
    @m1niclip637 3 роки тому

    СПАСИБО, ПОМОГ!

  • @maryzakharenko
    @maryzakharenko 2 роки тому +2

    В чем может быть ошибка, если скай бокс меняется на ночной, а обратно на дневной не меняется?

    • @rikzing3919
      @rikzing3919 2 роки тому +5

      открываем Window-Rendering-Lighting и в разделе Environment и ставим любой skybox кроме SkyboxDay и SkyboxNight. Вы, быстрее всего поставили там SkyboxDay и поэтому RenderSettings.skybox.Lerp(nightSkyBox, daySkyBox, skyBoxCurve.Evaluate(timeOfDay)); работает не так, как Вам хотелось бы... мне и самому объяснил этот момент мой знакомый, так что советую почитать про Lerp и в целом математические штучки в Unity ^-^

  • @СергейСобойченко
    @СергейСобойченко 5 років тому +1

    Дружище, а как делать свет в играх с день-ночь циклом? Можешь по этому урок сделать? Нигде толком об этом инфы комплексной нету. Что запекать, что не запекать. Я так понимаю это только реалтайм GI нужно использовать? А как-же быть если есть открытая лока с освещением от солнца и строения на ней со своими лампочками внутри, все светильники реалтайм делать? Сильно накладно для ФПС, а при реалтайм GI они запекаться не будут.. В общем, одни вопросы...

    • @EmeraldPowder
      @EmeraldPowder  5 років тому +5

      Лампочки можно сделать Baked, главное отметить их и геометрию как static, а движущееся солнце Realtime. И в настройках включить и baked, и realtime GI. Тогда GI и просто свет от кучи лампочек запечётся, а от солнца будет уже просчитываться. Как-то так, скрин: postimg.cc/8jgfL68L
      Может быть сниму видео про освещение, это тема широкая

  • @МатвейСтрелков-ш5т
    @МатвейСтрелков-ш5т 2 роки тому +1

    Как исправить:
    Ошибка CS1061 "Light" не содержит определения "intensity", и не удалось найти доступный метод расширения "intensity", принимающий тип "Light" в качестве первого аргумента?

    • @modman7424
      @modman7424 2 роки тому +1

      Проверь, добавил ли ты его в инспекторе

  • @a65tesla
    @a65tesla 2 роки тому +1

    добрый день, как сделать смену дня и ночи в 2д игре в юнити 2021

  • @MarkKurtsev
    @MarkKurtsev 10 місяців тому +1

    Что делать если скайбокс дня просто принимает своства ночного и все

    • @dmitryzh3344
      @dmitryzh3344 4 місяці тому +1

      Чтобы этого избежать: создайте 3-й skybox, который вы выставите в настройках освещения (ночной, дневной он или еще какой - не важно, его всего равно изменит скрипт на нужный, или точнее сказать, изменит его параметры), а другие два, которые вы создали для дня и для ночи, назначьте в скрипте, как и в видео. Таким образом у нас выставлен в настройках skybox, параметры которого мы изменяем на дневные или ночные через скрипт.

    • @MarkKurtsev
      @MarkKurtsev 4 місяці тому

      @@dmitryzh3344 Спасибо

  • @plantonhhannel374
    @plantonhhannel374 2 роки тому +1

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

    • @plantonhhannel374
      @plantonhhannel374 2 роки тому

      а если быть точнее,то на значении ~0.95 в TImeOfDay

    • @dynam1k463
      @dynam1k463 Рік тому

      @@plantonhhannel374 Скорее всего проблема в кривой луны

  • @КонстантинСтепанов-щ6ы

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

  • @blazeeyestudio3747
    @blazeeyestudio3747 3 роки тому +2

    где найти ночной и дневной скайбокс как у вас?или как их сделать?

    • @tootlno3774
      @tootlno3774 3 роки тому

      тот же вопрос, нихуя не понятно, где взять ночной скайбокс

    • @dynam1k463
      @dynam1k463 Рік тому +1

      Нужно создать материал и сверху в параметрах выбрать Shader -> Skybox/Procedural

  • @BlueWolf.
    @BlueWolf. 2 роки тому +1

    а как увеличить солнце? подскажите, пожалуйста.

    • @DANC-4IK
      @DANC-4IK 2 роки тому +1

      другой скайбокс с большим солнцем поставь

    • @dynam1k463
      @dynam1k463 Рік тому

      Создаешь другой скайбокс и в нём меняешь параметр Sun Size

  • @HorizonGamer26
    @HorizonGamer26 2 роки тому +1

    приветствую а скай боксы любые можно илт нет?

    • @EmeraldPowder
      @EmeraldPowder  2 роки тому +1

      Можно любые, но чтобы солнце по небу двигалось нужно чтобы шейдер скайбокса это поддерживал

    • @HorizonGamer26
      @HorizonGamer26 2 роки тому

      @@EmeraldPowder а что делать если когда ночь становиться скайбокс ночи не появляется

    • @HorizonGamer26
      @HorizonGamer26 2 роки тому

      @@EmeraldPowder хотя он есть в lighting

  • @wild3dcgi969
    @wild3dcgi969 4 роки тому +1

    Почему то не принимает вот тут.... :( может кто то подскажет .... как исправить.
    var mainModule = Stars.main; - говорит Имя Stars не существует в текущем контексте.

    • @EmeraldPowder
      @EmeraldPowder  4 роки тому

      Надо добавить поле public ParticleSystem Stars; в класс, и перетащить в инспекторе ссылку на систему частиц со звёздами. Или вообще эти строчки про stars убрать, если звёзды не нужны

  • @KrutaMan
    @KrutaMan Рік тому

    система частиц остается в 0 координатах, есть способ статично к камере прикрепить? или к игроку ? двигать звезды в след за игроком как то не хочется

    • @EmeraldPowder
      @EmeraldPowder  Рік тому

      Наверное проще чем скрипт который будет их двигать за игроком ничего не придумаешь

  • @MrNELL
    @MrNELL 4 роки тому

    а у меня звёзды днём всё равно не убирается почем?

  • @skrusser118
    @skrusser118 3 роки тому

    У меня луна появляется криво а солнце нормально что делать?

  • @sergeyjiter6732
    @sergeyjiter6732 Рік тому

    Как изменить текстуру солнца?

  • @PSAReV_PLAY
    @PSAReV_PLAY 4 роки тому

    А полную темноту как сделать? как в rust что бы темнота была

    • @s.a.studio3069
      @s.a.studio3069 4 роки тому +1

      просто повернуть dirctional light :
      using UnityEngine;
      using UnityEngine.UI;
      using System.Collections;
      public class Day_Night : MonoBehaviour {
      void Update()
      {
      transform.Rotate(Vector3.left,Time.deltaTime * 3f);
      }
      }

  • @ForgottenTime1941
    @ForgottenTime1941 4 роки тому +2

    Спасибо за видео! А кто-нибудь знает из-за чего real-time тени дёргаются при движении? Дистанция - всего 50 метров, первый каскад - 10%, качество наилучшее. размер сцены - 500х500. В первом каскаде дрожания нет (если его не увеличивать), а в остальных - чем дальше, тем больше.

    • @Виталик-ю3д
      @Виталик-ю3д 4 роки тому

      Не знаю

    • @fenikzzz3534
      @fenikzzz3534 4 роки тому +1

      @@Виталик-ю3д блин, вот это ты информативный!

    • @Виталик-ю3д
      @Виталик-ю3д 4 роки тому

      @@fenikzzz3534 у меня так же было, это проблемы света юньки

  • @zayana2833
    @zayana2833 2 роки тому

    У меня "RenderSettings.sun", sun берет как ошибку. Юнити почему-то не понимает sun. Помогите пожалуйста

    • @KrutaMan
      @KrutaMan Рік тому

      может быть в присвоении объекта Light ошибка или солнце не передано в скрипт

  • @ivanlovt3828
    @ivanlovt3828 2 роки тому

    получается не все скайбоксы можно так менять?(

    • @Mr.Epsilion
      @Mr.Epsilion Рік тому

      все, у кого шейдер материала является. скайбокс

  • @kirifan3850
    @kirifan3850 5 років тому +1

    Чел я хотел бы у тебя много чему поучится и много чего спросить.

  • @denibundin6971
    @denibundin6971 5 років тому +1

    Было бы интересно сделать для d2

    • @EmeraldPowder
      @EmeraldPowder  5 років тому +2

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

    • @denibundin6971
      @denibundin6971 5 років тому

      @@EmeraldPowder Ещё задать движение солнца и луны

  • @Penselie1Geniy
    @Penselie1Geniy 2 роки тому

    А в 2д?..

  • @Depreloid
    @Depreloid Рік тому

    на новых версиях юнити почти не работает. не хочешь видео переснять?)

  • @blazeeyestudio3747
    @blazeeyestudio3747 3 роки тому

    как изменить время оборота?

    • @dynam1k463
      @dynam1k463 Рік тому

      Вряд ли актуально, но в переменной Day duration задаёшь)

  • @gotoplay2551
    @gotoplay2551 5 років тому

    у тебя голос как у мармока :)

    • @fenikzzz3534
      @fenikzzz3534 4 роки тому +3

      Вообще не похож

  • @NickProkhorenko
    @NickProkhorenko 3 роки тому

    А нельзя тупо добавить в unity второе солнце. Это что-ли все на что способен unity, 1 единственное солнце, с которым мы манипулируем?
    А если я хочу сделать игру про космос и чтоб там была не одна звезда, а 100, 1000 и больше?
    Сейчас в данный момент я делаю игру ,,выживание в лесу,, и я не хочу чтоб на восходе внезапно по коду появлялась луна. У меня как бы можно увидеть горизонт, и если смотреть на восход импровизированной ,,Луны,, то я не увижу Луну, я увижу внезапно появившееся Солнце ввиде Луны.
    Так вот вопрос: Можно ли в unity добавить больше одного светила? Если да, то как?

  • @ВолодимирКолягін
    @ВолодимирКолягін 3 роки тому +1

    Ты что ненормальный, это всего лиш смена дня и ночи, а ты там кривые с масивами понаделал. А просто лампочку крутить вокруг никак что ли.