GameTime - Смена времени суток

Лучший способ помочь другим, поделиться своими находками.

GameTime - Смена времени суток

Сообщение alexz 02 янв 2011, 19:50

Изображение Изображение Изображение

1. Импортировать GameTime.unitypackage.
http://dl.dropbox.com/u/8203557/GameTim ... itypackage (9 Мб)

2. Создать новый слой (Layer) под названием «Sky». В нём будет рендериться небо (в виде скайбокса) и всё, что по нему летает.

3. Настроить главную камеру:
― параметр Clear Flags установить в Don't Clear;
― в параметре Culling Mask выбрать всё, кроме слоя «Sky»;
― параметр Depth установить в 1.

4. К главной камере добавить дочернюю «Sky camera»:
― параметр Clear Flags установить в Skybox;
― в параметре Culling Mask выключить всё, оставив только слой «Sky»;
― убедиться, что параметр Depth = 0 или просто меньше, чем у главной камеры;
― добавить скрипт SkyCameraController;
― удалить ненужные компоненты GUILayer, Flare Layer и Audio Listener.

Изображение

5. Поместить на сцену префаб GameTime:
― для него и для всех его дочерних объектов установить слой «Sky»;
― в параметре Player Camera указать главную камеру;
― в параметре Attached To указать объект, вокруг которого будут вращаться объекты на небе. Скорее всего, это будет First Person Conroller или 3rd Person Controller;
― в параметре Day Cycle In Minutes указать длительность игровых суток в реальных минутах. Этот параметр можно менять в рилтайме, чтобы ускорить или замедлить течение игрового времени.

Изображение

Time Of Day Transitions ― это список переходов: ночь->утро, утро->день, день->вечер, вечер->ночь. Для каждого перехода задаётся время его начала (Start Hour), длительность (Duration In Hours) и набор параметров, управляющих всякими настройками окружающей среды.

Например: Start Hour = 17, Duration In Hours = 1, Sun Intensity = 0.3 означают, что начиная с 17:00 по игровому времени, в течение 1 часа интенсивность солнца будет плавно меняться со своего предыдущего значения до значения 0.3.

Time In Hours ― начальное время в игровых часах.
Initial State Index ― начальное состояние окружающей среды (индекс в списке Time Of Day Transitions).

Например, если мы хотим начать игру в полночь, надо выставить Time In Hours = 0 (0 часов, 0 минут), Initial State Index = 0 (ночь). Если хотим начать игру в 15:30, то выставляем Time In Hours = 15.5 (15 часов, 30 минут), Initial State Index = 2 (день).

6. Настроить скайбокс:
Открыть Edit ―> Render Settings и параметр Skybox Material установить в Blended Sky.

Вроде всё.

---------------------------------------------
Пример проекта, созданного с нуля на основе GameTime.unitypackage

http://dl.dropbox.com/u/8203557/GameTime/GameTime.zip (12 Мб)

---------------------------------------------
Пример повеселее:

F ― полный экран
левый Shift ― ускорение времени

HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/8203557/island3.unity3d&w=600&h=400&t=false&preview=1' height='"+(400+30)+"' width='600' frameborder='0' scrolling='no'></iframe>"); </script>

---------------------------------------------
Описание настроек окружающей среды:

Ambient Light (color) ― фоновое освещение
Skybox Blend Value (float) ― смешивание ночного и дневного скайбоксов. 0 ― ночь, 1 ― день
Skybox Tint Color ― дополнительный оттенок для скайбокса
Fog Color ― цвет тумана
Fog Density (float) ― плотность тумана
Sun Color ― цвет источника света солнца
Sun Intensity (float) ― интенсивность источника света солнца
Sun Tint Color ― дополнительный оттенок (и прозрачность) плашки с текстурой солнца
Moon Tint Color ― дополнительный оттенок (и прозрачность) плашки с текстурой луны

Параметры Aux Color 1 и Aux Color 2 (color) ― дополнительные. Сами по себе ничего не делают, но их значения можно считывать и для чего-нибудь использовать. Например, в сцене с островом я использовал Aux Color 1, чтобы вручную менять цвет воды в зависимости от времени суток:

EnvironmentState envState = gameTime.GetCurrentEnvironmentState();
Color waterColor = envState.auxColor1;
oceanScript.SendMessage("SetWaterColor", waterColor);


Если сделать облака, можно задействовать Aux Color для управления цветом облаков.

---------------------------------------------
Вероятно полезные функции класса GameTime:

int GetSeconds() ― возвращает количество секунд, прошедшее с начала дня.
int GetDaysPassed() ― возвращает количество прошедших дней; счётчик увеличивается ровно в полночь.
EnvironmentState GetCurrentEnvironmentState() ― возвращает текущее состояние окружающей среды:

Синтаксис:
Используется csharp
public class EnvironmentState
{
        public float skyboxBlendValue;
        public Color skyboxTintColor;

        public Color fogColor;
        public float fogDensity;

        public float sunIntensity;
        public Color sunColor;
        public Color sunTintColor;

        public Color ambientLight;

        public Color moonTintColor;

        public Color auxColor1, auxColor2;
}


---------------------------------------------
Описание скриптовых файлов:

GameTime.cs ― основной скрипт, который считает время, крутит луну и солнце и меняет параметры окружающей среды.
SizeController.cs ― вешается на плашки луны и солнца. Когда они низко над горизонтом, делает их чуть крупнее.
SkyCameraController.cs ― вешается на камеру, рисующую небо. Отключает на этой камере туман и ставит большой ambient-свет, от которого зависит яркость луны.
SkyGlowController.cs ― вешается на большую оранжевую плашку, которая имитирует зарю/закат. Регулирует её прозрачность в зависимости от высоты над горизонтом.
Последний раз редактировалось alexz 02 янв 2011, 22:43, всего редактировалось 7 раз(а).
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: GameTime - Смена времени суток

Сообщение gnoblin 02 янв 2011, 20:14

(3A4OT)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: GameTime - Смена времени суток

Сообщение Hansstudio 03 янв 2011, 01:08

С удовольствием буду юзать! (3A4OT)
Аватара пользователя
Hansstudio
UNец
 
Сообщения: 10
Зарегистрирован: 15 мар 2010, 05:31
Откуда: Ташкент

Re: GameTime - Смена времени суток

Сообщение WebWolf 03 янв 2011, 14:07

Очень хорошо :-) Еще бы добавить динамические облака и погодные условия и будет супер :-) (popcorn1)
WTF? _WolfGames3D.com / Все в Tanks Heroes Вконтакте!
Аватара пользователя
WebWolf
Старожил
 
Сообщения: 532
Зарегистрирован: 19 дек 2009, 15:49
Откуда: Russian Federation
  • Сайт
  • ICQ

Re: GameTime - Смена времени суток

Сообщение bitboy 16 мар 2011, 22:10

вопрос вот такой. как сделать чтобы скайкуб не крутился вместе со мной. а то бесит и не реалистично.
___________________________________________________________________________________________

хз как но убралось)
bitboy
UNец
 
Сообщения: 27
Зарегистрирован: 16 мар 2011, 20:52
  • ICQ

Re: GameTime - Смена времени суток

Сообщение GameDev 26 апр 2011, 13:23

У меня какието проблемы с водой, различные блики и непонятные отражения... уже 2 дня мучаюсь, но чет не получается ничего...может кто знает в чем проблема?! Вот скрин
1.jpg
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось GameDev 03 май 2011, 18:14, всего редактировалось 4 раз(а).
GameDev
UNец
 
Сообщения: 4
Зарегистрирован: 02 мар 2011, 13:00

Re: GameTime - Смена времени суток

Сообщение Golandez 26 апр 2011, 15:46

При таком кричащем нике должно и ума хватить хотя бы скриншоты приложить.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: GameTime - Смена времени суток

Сообщение GameDev 04 май 2011, 18:14

Может это из за версии, у меня стоит 3.0?!
GameDev
UNец
 
Сообщения: 4
Зарегистрирован: 02 мар 2011, 13:00

Re: GameTime - Смена времени суток

Сообщение GameDev 07 май 2011, 19:46

Помогите кто чем может я не могу понять че такое...пробовал 2 версии юнити 3.0 и 3.1, блики так и не уходят!!!
GameDev
UNец
 
Сообщения: 4
Зарегистрирован: 02 мар 2011, 13:00

Re: GameTime - Смена времени суток

Сообщение PetkaGtA 13 май 2011, 14:07

это просто камеры не совпадают добавь water в culling mask где надо скай выставить точно конечно не помню но помоему надо так делать
PetkaGtA
UNIт
 
Сообщения: 81
Зарегистрирован: 09 сен 2010, 10:05

Re: GameTime - Смена времени суток

Сообщение GameDev 15 май 2011, 11:16

PetkaGtA, благодарю помогло :-bd
GameDev
UNец
 
Сообщения: 4
Зарегистрирован: 02 мар 2011, 13:00

Re: GameTime - Смена времени суток

Сообщение Max-Osovsky 05 июн 2011, 19:49

А как вывести на экран время суток?
Max-Osovsky
UNец
 
Сообщения: 1
Зарегистрирован: 05 июн 2011, 19:17

Re: GameTime - Смена времени суток

Сообщение Alcatraz 10 июн 2011, 15:07

у меня, что луна как чёрно пятно, похоже дело в тумане, и он фпс много есть..пожалуй надо мне его отрубить..
Unity3D Game Developer
Аватара пользователя
Alcatraz
UNITрон
 
Сообщения: 236
Зарегистрирован: 07 июн 2011, 09:12
Откуда: Москва
  • Сайт
  • ICQ

Re: GameTime - Смена времени суток

Сообщение Deatrocker 27 сен 2011, 20:28

Хы я всегда думал почему нельзя просто в цикле вращать directional lite =)))) А тут прям со сменой skyboxa, круто =) если нормально будет работать то просто шик для мультиплеера
Tauren chieftain
Аватара пользователя
Deatrocker
UNITрон
 
Сообщения: 186
Зарегистрирован: 07 июл 2011, 00:04
Откуда: Ростов-на-Дону
  • Сайт

Re: GameTime - Смена времени суток

Сообщение Aikon 26 ноя 2011, 13:55

Unity 3.4.2 Pro.
Сделал все как указано, но солнце и луна не отображаются. Такое чувство, что они под углом (см. скрин).
В чем может быть проблема?
Изображение
Изображение
(на итоговое изображение наложена пара фильтров, не обращайте внимания)
Aikon
UNец
 
Сообщения: 3
Зарегистрирован: 26 ноя 2011, 13:48

След.

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3