Страница 1 из 3

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

СообщениеДобавлено: 02 янв 2011, 19:50
alexz
Изображение Изображение Изображение

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 ― вешается на большую оранжевую плашку, которая имитирует зарю/закат. Регулирует её прозрачность в зависимости от высоты над горизонтом.

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

СообщениеДобавлено: 02 янв 2011, 20:14
gnoblin
(3A4OT)

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

СообщениеДобавлено: 03 янв 2011, 01:08
Hansstudio
С удовольствием буду юзать! (3A4OT)

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

СообщениеДобавлено: 03 янв 2011, 14:07
WebWolf
Очень хорошо :-) Еще бы добавить динамические облака и погодные условия и будет супер :-) (popcorn1)

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

СообщениеДобавлено: 16 мар 2011, 22:10
bitboy
вопрос вот такой. как сделать чтобы скайкуб не крутился вместе со мной. а то бесит и не реалистично.
___________________________________________________________________________________________

хз как но убралось)

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

СообщениеДобавлено: 26 апр 2011, 13:23
GameDev
У меня какието проблемы с водой, различные блики и непонятные отражения... уже 2 дня мучаюсь, но чет не получается ничего...может кто знает в чем проблема?! Вот скрин
1.jpg

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

СообщениеДобавлено: 26 апр 2011, 15:46
Golandez
При таком кричащем нике должно и ума хватить хотя бы скриншоты приложить.

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

СообщениеДобавлено: 04 май 2011, 18:14
GameDev
Может это из за версии, у меня стоит 3.0?!

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

СообщениеДобавлено: 07 май 2011, 19:46
GameDev
Помогите кто чем может я не могу понять че такое...пробовал 2 версии юнити 3.0 и 3.1, блики так и не уходят!!!

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

СообщениеДобавлено: 13 май 2011, 14:07
PetkaGtA
это просто камеры не совпадают добавь water в culling mask где надо скай выставить точно конечно не помню но помоему надо так делать

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

СообщениеДобавлено: 15 май 2011, 11:16
GameDev
PetkaGtA, благодарю помогло :-bd

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

СообщениеДобавлено: 05 июн 2011, 19:49
Max-Osovsky
А как вывести на экран время суток?

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

СообщениеДобавлено: 10 июн 2011, 15:07
Alcatraz
у меня, что луна как чёрно пятно, похоже дело в тумане, и он фпс много есть..пожалуй надо мне его отрубить..

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

СообщениеДобавлено: 27 сен 2011, 20:28
Deatrocker
Хы я всегда думал почему нельзя просто в цикле вращать directional lite =)))) А тут прям со сменой skyboxa, круто =) если нормально будет работать то просто шик для мультиплеера

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

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