GLDEFS. Добавляем нашим спрайтам освещение.

Предисловие

С помощью GLDEFS, можно привязать к спрайтам — освещение, сделать 6ти сторонний skybox, а также анимировать эту освещенность, по аналогии с DECORATE.

Есть 3 типа освещения:

  • pointlight — статичное освещение
  • pulselight — освещение, которое меняет свой размер циклично, например размер увеличится с 50 до 100, за 0.5 секунды и обратно, и так повторяется по кругу.
  • flickerlight — освещение, которое в случайные промежутки времени, меняет свой размер.

PointLight (статичное освещение).

Для привязки освещения к актору (в нашем случае снаряду), нужно сначала создать освещение pointlight

Создайте текстовый файл GLDEFS через SLADE, как это делается я разбирал в уроке GameInfo — меняем окно загрузки. И в него добавьте следующий код:

pointlight myBullet1
{
    color 0.9 0.1 1.0
    size 140
}

Синтаксис у pointLight следующий:

pointlight название_переменной
{
    color красный зеленый синий
    size размер
}
  • название_переменной — указывает название нашего освещения, используя это название, можно привязать освещение к спрайту.
  • красный — значение от 0.0 до 1.0 указывает насколько ярко будет светится красный суб-пиксель.
  • зеленый — значение от 0.0 до 1.0 указывает насколько ярко будет светится зеленый суб-пиксель.
  • синий — значение от 0.0 до 1.0 указывает насколько ярко будет светится синий суб-пиксель.
  • размер — размер нашего освещения

Добавьте еще 1 pointLight (для разнообразия)

pointlight myBullet2
{
    color 0.1 0.9 1.0
    size 140
}

Должно получится так:

pointlight myBullet1
{
    color 0.9 0.1 1.0
    size 140
}

pointlight myBullet2
{
    color 0.1 0.9 1.0
    size 140
}

Освещение создано, осталось привязать его к актору. Добавьте следующий код к себе в GLDEFS.

object blueProj
{
	frame CBULA0 {light myBullet1}
	frame CBULB0 {light myBullet2}
}

Здесь в качестве снаряда, я использовал blueProj, его я делал в уроке DECORATE. Создаем проджектайлы(снаряды).

Синтаксис здесь довольно простой:

object название_актора
{
	frame название_кадра {light название_освещения}
	frame название_кадра {light название_освещения}
}
  • название_актора — здесь мы указываем к какому актору, привязано освещение.
  • название_кадра — указываем название кадра
  • название_освещения — указывает название объекта освещения (pointLight, pulseLight, flickerLight)

В данном случае, мы привязали к 1му кадру нашего снаряда — одно освещение, а ко второму кадру — другое.

Запускаем и смотрим.

Получился довольно классный эффект.

PulseLight

Добавьте еще 2 освещения, к своему коду:

pulselight myBullet3
{
    color 0.9 0.1 1.0
    size 140
    secondarySize 50
    interval 0.5
}
pulselight myBullet4
{
    color 0.1 0.9 1.0
    size 140
    secondarySize 50
    interval 0.5
}

А теперь, разберем синтаксис pulseLight:

pulselight название_переменной
{
    color 0.1 0.9 1.0
    size 140
    secondarySize 50
    interval 0.5
}

Появились новые строки, secondarySize и interval, разберем их.

  • secondarySize — указывает второй размер освещения
  • interval — время, за которое освещение поменяет свой размер на secondarySize, указывается в секундах.

В object, не забудьте привязать к спрайтам новое освещение (myBullet3 и myBullet4)

object blueProj
{
	frame CBULA0 {light myBullet3}
	frame CBULB0 {light myBullet4}
}

Рассмотрели, теперь запускаем.

Получился приятный пульсирующий эффект. Круто, идем дальше.

Flickerlight

Добавить еще 1 освещение, к себе в GLDEFS:

flickerlight myBullet5
{
    color 0.1 0.9 1.0
    size 140
    secondarySize 10
    chance 0.5
}
  • chance — здесь указывает шанс того что освещение изменит свой размер на secondarySize, 1.0 шанс 100%, 0.0 шанс 0%.

Измените object, под новое освещение.

object blueProj
{
	frame CBULA0 {light myBullet5}
	frame CBULB0 {light myBullet5}
}

И можете запускать.

Получился, мигающий свет.

Светящийся пол/потолок

Также можно осветить пол, это делается в блоке glow. Добавьте следующий код:

Glow
{
	Flats
	{
		flat "FLOOR4_8"
	}
	Texture "FLOOR4_8", red, 32
}

Синтаксис тут следующий:

Glow
{
	Flats
	{
		flat "название_плоскости"
	}
	Texture "название_плоскости", цвет, высота
}
  • название_плоскости — название текстуры (пола/потолка), которая будет испускать свет.
  • цвет — цвет освещения
  • высота — указывает до какой высоты будет испускаться свет.

Проверяем.

Получилось неплохо.

Конечно, я не рассказал про 6ти сторонний skybox, про шейдеры, про Colorization, про SectorLight. Но, думаю для начала, этого будет достаточно.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!