Затемнение экрана

Общие вопросы о Unity3D

Затемнение экрана

Сообщение shadowagv 13 янв 2012, 13:41

Как сделать эффект плавного затемнения экрана до полностью чёрного и обратно, может есть готовые скрипты , шейдеры или тп?
Пока что первое в голову мне пришло это чёрная тектура и изменять альфа канал.
Аватара пользователя
shadowagv
UNITрон
 
Сообщения: 173
Зарегистрирован: 09 сен 2011, 18:57
Откуда: Minsk
  • Сайт

Re: Затемнение экрана

Сообщение shadowagv 13 янв 2012, 13:43

Может есть в пакете Assests Effect ?
Аватара пользователя
shadowagv
UNITрон
 
Сообщения: 173
Зарегистрирован: 09 сен 2011, 18:57
Откуда: Minsk
  • Сайт

Re: Затемнение экрана

Сообщение Battle Angel Alita 13 янв 2012, 13:46

Оденьте на голову чёрный шарик вывернутый наизнанку, и меняйте его альфу.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Затемнение экрана

Сообщение Angel 07 13 янв 2012, 14:01

Самый простой способ - это растягивать черный пиксель в GUI. Желаемое явление называется fade in или fade out. В Asset Store есть пакет бесплатный, осталось только найти.
_ttp://shekn.deviantart.com/
Аватара пользователя
Angel 07
UNIверсал
 
Сообщения: 367
Зарегистрирован: 02 окт 2010, 18:58

Затемнение экрана (объединено)

Сообщение MungoXP 06 авг 2012, 01:38

Всем привет!
Я разрабатываю игру для iOS. У меня на одной сцене отдельные уровни. И когда ГГ попадает в Trigger зону камера постепенно затемняется и меняет координаты на новый уровень, ГГ также переносится. Как сделать постепенное затемнение экрана? Объясните пожалуйста поподробнее.

P.S.: Я видел уже тему на этом форуме, но она мне не помогла :). Спасибо.
MungoXP
UNIт
 
Сообщения: 94
Зарегистрирован: 19 апр 2011, 18:54

Re: Затемнение экрана

Сообщение Woolf 06 авг 2012, 02:02

MungoXP писал(а):Всем привет!
Я разрабатываю игру для iOS. У меня на одной сцене отдельные уровни. И когда ГГ попадает в Trigger зону камера постепенно затемняется и меняет координаты на новый уровень, ГГ также переносится. Как сделать постепенное затемнение экрана? Объясните пожалуйста поподробнее.

P.S.: Я видел уже тему на этом форуме, но она мне не помогла :). Спасибо.



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

Re: Затемнение экрана

Сообщение trololoid 06 авг 2012, 02:25

Плашку перед камерой,парентишь, на плашку текстуру(любую).
Скейлить плашку, когда надо.
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: Затемнение экрана

Сообщение Woolf 06 авг 2012, 02:55

trololoid писал(а):Плашку перед камерой,парентишь, на плашку текстуру(любую).
Скейлить плашку, когда надо.


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

Re: Затемнение экрана

Сообщение trololoid 06 авг 2012, 03:13

Раньше с гуем не дружил, да и эффекты проще делать
(кровь сползающую etc.)
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: Затемнение экрана

Сообщение MysTer92 06 авг 2012, 06:29

Квад во весь экран с альфой рисовать поверх основной геометрии на iOS дороговато же будет, нет?
Лучше по-моему отредактировать один из используемых стандартных шейдеров (http://unity3d.com/support/resources/as ... in-shaders), добавив множитель, при котором можно плавное затухание сделать и наоборот, к итоговому цвету.
Asset Store: Graphic Power-Up
about me
MysTer92
UNIт
 
Сообщения: 97
Зарегистрирован: 03 дек 2009, 09:08
Откуда: Кемерово
  • Сайт
  • ICQ

Re: Затемнение экрана

Сообщение Левш@ 06 авг 2012, 07:29

А что, разве на iOS нельзя амбиент и свет в реалтайме изменять ?
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Затемнение экрана

Сообщение MysTer92 06 авг 2012, 07:45

Эмбиент прибавляется к основному свету, а в анлит-шейдерах он вообще отсутствует. Мы же не знаем, что используют. Реал-тайм освещение, без освещения(анлит), лайтмапы? Поэтому и предлагают универсальные варианты.
Asset Store: Graphic Power-Up
about me
MysTer92
UNIт
 
Сообщения: 97
Зарегистрирован: 03 дек 2009, 09:08
Откуда: Кемерово
  • Сайт
  • ICQ

Re: Затемнение экрана

Сообщение Левш@ 06 авг 2012, 07:56

Мы же не знаем, что используют.

Это да... как всегда. :)
Гестапо в отпуске, кофе закончилось...
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Затемнение экрана

Сообщение _Disa_ 06 авг 2012, 08:54

Не могу точно ответить, т.к. все руки до про-версии не дойдут, но разве нельзя сделать черный квадрат GLем и менять его альфу?

Синтаксис:
Используется cpp
// До пострендера , например:
// if (t<= 1.0f)
// {
//   t = Time.deltaTime() / нормирующий_коэффициент (кол-во секунд для затемнения)
// }
// else
// {
//   t = 1.0f;
// }

OnPostRender()
{
  ...
   GL.Begin( GL.LINES );
      GL.Color( Color(0.0f,0.0f,0.0f, t) );
      GL.Vertex3( 0.0f, 0.0f, 0.0f);
      GL.Vertex3( 1.0f, 0.0f, 0.0f );      
      GL.Vertex3( 0.0f, 1.0f, 0.0f );
      GL.Vertex3( 1.0f, 1.0f, 0.0f );
  GL.End();
  ...
}
...


Яб проверил, но не имею возможностей :( Если ошибся скажите, все делал ток в голове.

PS: На GL начиная (помоему) с 3 версии конструкции GL.Begin ... GL.End считаются доисторическими, странно что в UT сделали обертки в таком же виде, а не через glDraw*
ArShift
_Disa_
UNIт
 
Сообщения: 97
Зарегистрирован: 07 мар 2012, 09:07
Откуда: Нерезиновая
Skype: islamov_denis
  • Сайт

Re: Затемнение экрана

Сообщение pod4444 06 авг 2012, 09:51

Один из наиболее простых способов:
Создаем плейн и материал с шейдером Transparent\Diffuse, вешаем его на плейн. Плейн делаем дочерним камере и размещаем так, чтобы он закрывал весь обзор. В материале альфу делаем 0.
Используем такой скрипт:
Синтаксис:
Используется csharp
            void Start()
            {
                        StartCoroutine(Blackout(false));
            }

            IEnumerator Blackout(bool inverse)
            {
                Material tempMaterial = mainCamera.GetComponentInChildren<Renderer>().material;
                Color tempColor = tempMaterial.GetColor("_Color");
                if (!inverse)
                {
                    while (tempColor.a < 1f)
                    {
                        yield return new WaitForEndOfFrame();
                        tempColor.a = tempColor.a + 0.01f;
                        tempMaterial.SetColor("_Color", tempColor);
                    }
                }
                else if (inverse)
                {
                    while (tempColor.a > 0f)
                    {
                        yield return new WaitForEndOfFrame();
                        tempColor.a = tempColor.a - 0.01f;
                        tempMaterial.SetColor("_Color", tempColor);
                    }
                }
            }
 
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

След.

Вернуться в Общие вопросы

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 22