Предисловие.
Если вы хотите сделать взаимодействие с жидкостью реалистичным, то без TERRAIN вам не обойтись. В данном уроке, подробно разберем создание брызг, в TERRAIN.
Что такое TERRAIN?
TERRAIN — это файл, в котором прописаны настройки флатов (пол/потолок). С помощью TERRAIN, можно сделать следующее:
- Добавить брызги, у жидкости (воды, лавы, кислоты и т.п.).
- Задать силу трения, для текстуры плоскости (например, если мы делаем лед)
- Установить урон в секунду, при нахождении на плоскости.
- Проигрывать разные звуки шагов, в зависимости от типа плоскости (если ходишь по дереву, то звук глухой, а если по металлу, то звук звонкий)
Приступаем к работе
Перед началом, скачайте пак спрайтов с MEGA. И добавьте эти картинки в свой wad, между маркерами S_START и S_END, также, не забывайте про смещение. У снарядов смещение в центре, у декораций — внизу.
Итак наш план таков:
- В DECORATE, создаем актор (декорацию), проигрывающий анимацию поднятой воды.
- В DECORATE, создаем снаряд (projectile), проигрывающий анимацию капелек воды.
- В TERRAIN, создаем slpash (брызги)
- В TERRAIN, Этот splash присваиваем к terrain (блок кода).
- В TERRAIN, а terrain присваиваем к текстуре воды.
Будем идти по порядку:
DECORATE. Анимация поднятой воды.
Добавьте, в DECORATE следующий код:
ACTOR MyWaterSplash
{
+NOBLOCKMAP
+NOCLIP
+NOGRAVITY
+DONTSPLASH
States
{
Spawn:
SPS1 ABCDEFGHIJ 3
Stop
}
}
А теперь, разберем комманды:
- +DONTSPLASH — важный флаг, он запрещает создавать splash (брызги), под действием этого актора.
- +NOCLIP — флаг, выключающий коллизию (через актор можно пройти).
Данный актор, проигрывает анимацию поднятой воды,
А затем — исчезает. Переходим ко 2му пункту.
DECORATE. Создание капель.
Добавьте, в DECORATE следующий код:
ACTOR MyWaterChunk
{
Radius 2
Height 4
+NOBLOCKMAP
+MISSILE
+DROPOFF
+NOTELEPORT
+LOWGRAVITY
+CANNOTPUSH
+DONTSPLASH
States
{
Spawn:
SPCH ABC 8
SPCH D 16
Stop
Death:
SPCH D 10
Stop
}
}
Капли, это снаряды, которые проигрывают анимацию, и, при столкновении — исчезают.
Разберем код:
- +NOTELEPORT — запрещаем каплям, телепорт.
- +LOWGRAVITY — уменьшаем гравитацию
- +CANNOTPUSH — не даем каплям двигать акторы, cо флагом +Pushable
Переходим, к 3-ему пункту.
TERRAIN. Создаем splash.
Теперь, создайте файл TERRAIN, через Slade. Как это делается я рассказывал в уроке GameInfo — меняем окно загрузки.
И добавьте следующий код, к себе в TERRAIN:
splash DoomWater
{
smallclass MyWaterSplash
smallclip 0
smallsound world/drip
baseclass MyWaterSplash
chunkclass MyWaterChunk
sound world/watersplash
noalert
}
Теперь разберем строки:
- smallclass — задает актор, который появится при выстреле пулей (пистолет, пулемет, дробовик)
- smallclip — если его не поставить, актор будет проваливаться под пол.
- smallsound — задает звук актора
Таким образом строки:
smallclass MyWaterSplash
smallclip 0
smallsound world/drip
Отвечают за выстрел пули (пистолет, пулемет, дробовик).
Идем дальше:
- baseclass — задает актор (поднимающиеся вода), который появится при прыжке на воду, или после выстрела снаряда (плазма).
- chunkclass — задает капли.
- sound — задает звук
В данном случае, эти строки:
baseclass MyWaterSplash
chunkclass MyWaterChunk
sound world/watersplash
Задают отвечают, за прыжок на воду и выстрел снарядом. И последнее.
noalert
Брызги воды, не будят монстров.
Идем дальше.
TERRAIN. Добавляем splash к terrain
Добавьте следующий код, к себе в TERRAIN:
terrain DoomWater
{
splash DoomWater
liquid
}
Разберем этот код.
splash DoomWater
splash — задает наши брызги, мы использовали сплеш DoomWater, созданный ранее.
liquid
liquid — заставляет отскакивающие акторы (гильзы) исчезать в воде.
Перейдем, к последнему этапу.
TERRAIN. Присваиваем текстуре воды, наш terrain.
Допишите TERRAIN, следующим кодом:
floor fwater1 Doomwater
floor fwater2 Doomwater
floor fwater3 Doomwater
floor fwater4 Doomwater
Синтаксис у floor следующий:
floor название_текстуры название_terrain
В нашем случае, мы привязали спрайты анимации воды, к нашему terrain.
Готово. В итоге, получился классный эффект, если есть вопросы, задавайте их в комментариях.