День ночь привязка к времени

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

День ночь привязка к времени

Сообщение reQuem 18 июл 2017, 18:03

Добрый день, у меня есть скрипт который крутит источник света, имитация дня и ночи.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class DayNightController : MonoBehaviour {

    // Направляющий свет, которым мы управляем как наше солнце.
    public Light sun;
   
    // Количество реальных секунд в один полный игровой день.
    // Установите это на 86400 для 24-часового дня в реальном времени.
    public float secondsInFullDay = 120f;

    //  Значение, которое мы используем для расчета текущего времени суток.
        // Переход от 0 (полуночи) до 0,25 (восход солнца), 0,5 (полдень), 0,75 (закат) до 1 (полночь).
        // Мы определяем, какое значение должно быть восход солнца, и т. Д., Но я думал, что эти
        // Значения хорошо соответствуют. И теперь большая часть скрипта жестко привязана к этим значениям.
        [Range(0,1)]
    public float currentTimeOfDay = 0;

    // Множитель других сценариев может использовать для ускорения и замедления прохождения времени.
   
        [HideInInspector]
    public float timeMultiplier = 1f;

    // Получите первоначальную интенсивность солнца, чтобы мы это помним.
    float sunInitialIntensity;
    void Start() {
        sunInitialIntensity = sun.intensity;
    }

    void Update() {
        // Обновляет вращение и интенсивность солнца в соответствии с текущим временем суток.
                UpdateSun();

        // Это приводит к тому, что currentTimeOfDay переходит от 0 до 1 в количестве секунд, которые мы указали.
        currentTimeOfDay += (Time.deltaTime / secondsInFullDay) * timeMultiplier;

        // Если currentTimeOfDay равно 1(полуночи), установите его на 0, чтобы мы начали новый день.
        if (currentTimeOfDay >= 1) {
            currentTimeOfDay = 0;
        }
    }

    void UpdateSun() {

        // Поворачиваем солнце на 360 градусов вокруг оси x в соответствии с текущим временем суток.
        // Мы вычитаем на 90 градусов от этого, чтобы солнце поднялось на 0,25 вместо 0.
        // Я просто нашел, что с ним работать легче.
        // Ось Y определяет, где на горизонте солнце поднимется и установится.
        // Ось z ничего не делает.
        sun.transform.localRotation = Quaternion.Euler((currentTimeOfDay * 360f) - 90, -30*Mathf.Sin(2*Mathf.PI*currentTimeOfDay), 45);
        // Ниже определяется интенсивность солнца в соответствии с текущим временем суток.
        // Вы заметите, что я жестко закодировал кучу значений здесь. Это были только ценности
        // Я чувствовал себя лучше. Очевидно, это можно сделать настраиваемым пользователем.
        // Также с некоторым более умным кодом вы можете иметь разную длину для дня и
        // ночь тоже.

        // Солнце полно интенсивности в течение дня.
        float intensityMultiplier = 1;

        // Установите интенсивность 0 в ночную ночь.
        if (currentTimeOfDay <= 0.23f || currentTimeOfDay >= 0.75f) {
            intensityMultiplier = 0;
        }

        // Угасаем на солнце, когда он поднимается.
        else if (currentTimeOfDay <= 0.25f) {

            // 0.02 - это время между восходом солнца и временем, когда мы начинаем исчезать
            // интенсивность (0,25-0,23). Разделив 1 на это значение, получим 50.
            // Это говорит о том, что мы должны затухать в интенсивности в 50 раз быстрее, чем
            // время проходит, чтобы иметь возможность идти от 0 до 1 интенсивности в том же количестве
            // время, когда переменная currentTimeOfDay переходит от 0,23 до 0,25. Таким образом, мы получаем
            // совершенное увядание.
            intensityMultiplier = Mathf.Clamp01((currentTimeOfDay - 0.23f) * (1 / 0.02f));
        }

        // И исчезаем, когда он устанавливает.
        else if (currentTimeOfDay >= 0.73f) {
            intensityMultiplier = Mathf.Clamp01(1 - ((currentTimeOfDay - 0.73f) * (1 / 0.02f)));
        }


        // Умножьте интенсивность солнца в зависимости от времени суток.
        sun.intensity = sunInitialIntensity * intensityMultiplier;
   
    }
   
}

надо это время привязать к московскому времени, как посоветуете это сделать?
reQuem
UNITрон
 
Сообщения: 197
Зарегистрирован: 28 июн 2017, 18:38

Re: День ночь привязка к времени

Сообщение reQuem 18 июл 2017, 22:02

Все сделано) спасибо тем, кто хотел помочь)
reQuem
UNITрон
 
Сообщения: 197
Зарегистрирован: 28 июн 2017, 18:38

Re: День ночь привязка к времени

Сообщение Woolf 19 июл 2017, 00:02

reQuem писал(а):Все сделано) спасибо тем, кто хотел помочь)


Да незачто, обращайтесь еще.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: День ночь привязка к времени

Сообщение ru66ssb 19 июл 2017, 06:11

а решение?
System.DateTime.Now - то это понятно - а как вы определяете часовой пояс?
Аватара пользователя
ru66ssb
UNIт
 
Сообщения: 107
Зарегистрирован: 27 июн 2015, 07:01

Re: День ночь привязка к времени

Сообщение reQuem 20 июл 2017, 02:16

ru66ssb писал(а):а решение?
System.DateTime.Now - то это понятно - а как вы определяете часовой пояс?

время берется с сервера, там можно и изменить часовой пояс
reQuem
UNITрон
 
Сообщения: 197
Зарегистрирован: 28 июн 2017, 18:38


Вернуться в Почемучка

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

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