Система смены дня и ночи [Unity 3D] [Tutorial] (С луной и звёздами)
Вставка
- Опубліковано 20 вер 2024
- Во многих играх присутствует система смены дня и ночи. Она придаёт реализма игровому миру, и добавляет возможность введения интересных механик. В этом видео я покажу как добавить смену дня и ночи в игру на Unity 3D. Вы также можете скачать готовый проект, чтобы разобраться подробнее
Ссылка на готовый проект: github.com/eme...
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео
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😄
Спасибо за урок, добавил смену дня и ночи в прототип майна, про который Вы сейчас снимаете видео-курс) Очень классно и просто получилось!
а баги из туториала пофиксил?)
Черт, как же это круто всё!
Интересно было узнать о реалистической фазе смене дня и ночи, со сменой цикла в разную пору года
Ну это типа надо прописать, что если например прошло 40 дней, то выполняется команда смены суток(то есть меняется освещение, цвет неба, осадки какие нибудь добавляются). Это вроде не сложно должно быть. Сам скоро буду времена года настраивать.
@@NickProkhorenko По итогу получилось?
@@valera_kardan конечно
Если у вас не меняется скайбокс, тогда поставьте в окошке lighting дефолтный скайбокс, мне помогло
Очень круто!
Ребят, у кого смена skybox происходит всего один раз, а после он остается неизменным вне зависимости от времени суток, то это потому, что один skybox приобретает свойства другого. Чтобы этого избежать: создайте 3-й skybox, который вы выставите в настройках освещения (ночной, дневной он или еще какой - не важно, его всего равно изменит скрипт на нужный, или точнее сказать, изменит его параметры), а другие два, которые вы создали для дня и для ночи, назначьте в скрипте, как и в видео. Таким образом у нас выставлен в настройках skybox, параметры которого мы изменяем на дневные или ночные через скрипт.
поставил DayDuration на 1 и перезапустил вселенную...
Я оценю твои джоджо шутки😂😂
Класс, супер гайд, спасибо!
Просто и офигенно
Ты конечно сделал интересную штуку, но библиотеку DynamicGI.UpdateEnvironment(); обновлять в апдейте это просто сатанизм смешанный с алкоголизмом. Обязательно вынести это в корутину или куда еще, точно не в апдейт. Это очень тяжелый вызов. Разница составила около 20 фпс. На фх8300 это 0.5 проц времени. Я выставил повтор на 0.2 сек в корутине и оно плавно все работает. По тяжести можна сравнить с водой преломляющей свет ростянутой на 100 км
корутину дропни
Кстати можно сделать апдейт этого видео и добавить движение звёзд на небе (а то Солнце двигается, а звёзды нет) и если уж совсем извратиться, то ещё и смену фаз луны.
У меня почему то "Звёзды" на определённом расстояни стают черными. Выблизи цвет который я указал. Странно.
Проверил в другом проекте всё норм....
Короче это из-за тумана
Спасибо за видео!), но возник вопрос: с URP (Universal Render Pipeline) рендером манёвр с DinamicGI ( DynamicGI.UpdateEnvironment() ) является невозможным? Буду оочень рад если получу ответ :D
Спасибо за хороший урок, подача хорошая и информация полезная . Когда я попытался запустить игру, столкнулся с той же проблемой что и DANYLOV - баг с skybox`om. Как можно исправить этот баг?
Там надо установить в окошке настроек освещения, которое LIghting, где выбирается дефолтный скайбокс, не дневной или ночной, а какой-нибудь третий. Чтобы скрипт этот третий менял, а те два не трогал. Можно вроде бы и default-skybox оставить, если с ним работает
Сделал все точь в точь как у тебя, но работает странно, Солнце с Луной меняются, а skybox нет, но код с гравиюфиками правильный . Что делать?
Хорошие уроки)) Продолжай в том же духе;)
СПАСИБО
Приветствую, как можно сделать смену дня и ночи уже в 2д пространстве?
никак, там столько танцев с бубном
С интенсивностью помучаться, я прямо сейчас это и делаю
всё классно ,только у меня не получилось сделать смену скай боксов ,можешь пожалуйста скинуть твой код ,я просто не смог скачать проект, я подписан!🙏🙏🙏🙏
Доброго времени суток, я конечно вовремя подошёл) Не подскажешь, что менять, чтобы после захода солнца, луна тоже плавно выходила из-за горизонта, а не сразу оказывалась высоко (когда луна заходит например, там все красиво с солнцем)
Нужно поправить кривую скайбокса так, чтобы все время, пока должна существовать луна, значение было 0
СПАСИБО, ПОМОГ!
В чем может быть ошибка, если скай бокс меняется на ночной, а обратно на дневной не меняется?
открываем Window-Rendering-Lighting и в разделе Environment и ставим любой skybox кроме SkyboxDay и SkyboxNight. Вы, быстрее всего поставили там SkyboxDay и поэтому RenderSettings.skybox.Lerp(nightSkyBox, daySkyBox, skyBoxCurve.Evaluate(timeOfDay)); работает не так, как Вам хотелось бы... мне и самому объяснил этот момент мой знакомый, так что советую почитать про Lerp и в целом математические штучки в Unity ^-^
Дружище, а как делать свет в играх с день-ночь циклом? Можешь по этому урок сделать? Нигде толком об этом инфы комплексной нету. Что запекать, что не запекать. Я так понимаю это только реалтайм GI нужно использовать? А как-же быть если есть открытая лока с освещением от солнца и строения на ней со своими лампочками внутри, все светильники реалтайм делать? Сильно накладно для ФПС, а при реалтайм GI они запекаться не будут.. В общем, одни вопросы...
Лампочки можно сделать Baked, главное отметить их и геометрию как static, а движущееся солнце Realtime. И в настройках включить и baked, и realtime GI. Тогда GI и просто свет от кучи лампочек запечётся, а от солнца будет уже просчитываться. Как-то так, скрин: postimg.cc/8jgfL68L
Может быть сниму видео про освещение, это тема широкая
Как исправить:
Ошибка CS1061 "Light" не содержит определения "intensity", и не удалось найти доступный метод расширения "intensity", принимающий тип "Light" в качестве первого аргумента?
Проверь, добавил ли ты его в инспекторе
добрый день, как сделать смену дня и ночи в 2д игре в юнити 2021
Что делать если скайбокс дня просто принимает своства ночного и все
Чтобы этого избежать: создайте 3-й skybox, который вы выставите в настройках освещения (ночной, дневной он или еще какой - не важно, его всего равно изменит скрипт на нужный, или точнее сказать, изменит его параметры), а другие два, которые вы создали для дня и для ночи, назначьте в скрипте, как и в видео. Таким образом у нас выставлен в настройках skybox, параметры которого мы изменяем на дневные или ночные через скрипт.
@@dmitryzh3344 Спасибо
Доброго времени суток,хотелось бы спросить,почему моя луна не доходит до горизонта и пропадает?
а если быть точнее,то на значении ~0.95 в TImeOfDay
@@plantonhhannel374 Скорее всего проблема в кривой луны
У меня при этом очень близко солнце, и очень далеко луна, как это поменять? я солнце по всей сцене двигал не меняется
где найти ночной и дневной скайбокс как у вас?или как их сделать?
тот же вопрос, нихуя не понятно, где взять ночной скайбокс
Нужно создать материал и сверху в параметрах выбрать Shader -> Skybox/Procedural
а как увеличить солнце? подскажите, пожалуйста.
другой скайбокс с большим солнцем поставь
Создаешь другой скайбокс и в нём меняешь параметр Sun Size
приветствую а скай боксы любые можно илт нет?
Можно любые, но чтобы солнце по небу двигалось нужно чтобы шейдер скайбокса это поддерживал
@@EmeraldPowder а что делать если когда ночь становиться скайбокс ночи не появляется
@@EmeraldPowder хотя он есть в lighting
Почему то не принимает вот тут.... :( может кто то подскажет .... как исправить.
var mainModule = Stars.main; - говорит Имя Stars не существует в текущем контексте.
Надо добавить поле public ParticleSystem Stars; в класс, и перетащить в инспекторе ссылку на систему частиц со звёздами. Или вообще эти строчки про stars убрать, если звёзды не нужны
система частиц остается в 0 координатах, есть способ статично к камере прикрепить? или к игроку ? двигать звезды в след за игроком как то не хочется
Наверное проще чем скрипт который будет их двигать за игроком ничего не придумаешь
а у меня звёзды днём всё равно не убирается почем?
У меня луна появляется криво а солнце нормально что делать?
Как изменить текстуру солнца?
А полную темноту как сделать? как в rust что бы темнота была
просто повернуть dirctional light :
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Day_Night : MonoBehaviour {
void Update()
{
transform.Rotate(Vector3.left,Time.deltaTime * 3f);
}
}
Спасибо за видео! А кто-нибудь знает из-за чего real-time тени дёргаются при движении? Дистанция - всего 50 метров, первый каскад - 10%, качество наилучшее. размер сцены - 500х500. В первом каскаде дрожания нет (если его не увеличивать), а в остальных - чем дальше, тем больше.
Не знаю
@@Виталик-ю3д блин, вот это ты информативный!
@@fenikzzz3534 у меня так же было, это проблемы света юньки
У меня "RenderSettings.sun", sun берет как ошибку. Юнити почему-то не понимает sun. Помогите пожалуйста
может быть в присвоении объекта Light ошибка или солнце не передано в скрипт
получается не все скайбоксы можно так менять?(
все, у кого шейдер материала является. скайбокс
Чел я хотел бы у тебя много чему поучится и много чего спросить.
Было бы интересно сделать для d2
2d освещение сделать вообще очень много способов, так что тут всё не так однозначно. Но скорее всего какой-нибудь простой шейдер для спрайтов, который смешивает цвет с тёмно синим ночью, и тёплым белым днём. В системе, которую я показывал в видео про 2d освещение с помощью нормалей, можно двигать по полукругу солнце и луну, и так же как и в этом туториале менять интенсивность. Но в любом случае сложнее чем в 3d будет подходящие для такого спрайты нарисовать, и по сцене расставить, чтобы был виден эффект
@@EmeraldPowder Ещё задать движение солнца и луны
А в 2д?..
на новых версиях юнити почти не работает. не хочешь видео переснять?)
как изменить время оборота?
Вряд ли актуально, но в переменной Day duration задаёшь)
у тебя голос как у мармока :)
Вообще не похож
А нельзя тупо добавить в unity второе солнце. Это что-ли все на что способен unity, 1 единственное солнце, с которым мы манипулируем?
А если я хочу сделать игру про космос и чтоб там была не одна звезда, а 100, 1000 и больше?
Сейчас в данный момент я делаю игру ,,выживание в лесу,, и я не хочу чтоб на восходе внезапно по коду появлялась луна. У меня как бы можно увидеть горизонт, и если смотреть на восход импровизированной ,,Луны,, то я не увижу Луну, я увижу внезапно появившееся Солнце ввиде Луны.
Так вот вопрос: Можно ли в unity добавить больше одного светила? Если да, то как?
Ты что ненормальный, это всего лиш смена дня и ночи, а ты там кривые с масивами понаделал. А просто лампочку крутить вокруг никак что ли.
🤦♂️🤦♂️🤦♂️
хахахаха, топ коммент)