TERRAIN. Улучшаем воду.

Предисловие.

Если вы хотите сделать взаимодействие с жидкостью реалистичным, то без TERRAIN вам не обойтись. В данном уроке, подробно разберем создание брызг, в TERRAIN.

Что такое TERRAIN?

TERRAIN — это файл, в котором прописаны настройки флатов (пол/потолок). С помощью TERRAIN, можно сделать следующее:

  • Добавить брызги, у жидкости (воды, лавы, кислоты и т.п.).
  • Задать силу трения, для текстуры плоскости (например, если мы делаем лед)
  • Установить урон в секунду, при нахождении на плоскости.
  • Проигрывать разные звуки шагов, в зависимости от типа плоскости (если ходишь по дереву, то звук глухой, а если по металлу, то звук звонкий)

Приступаем к работе

Перед началом, скачайте пак спрайтов с MEGA. И добавьте эти картинки в свой wad, между маркерами S_START и S_END, также, не забывайте про смещение. У снарядов смещение в центре, у декораций — внизу.

Итак наш план таков:

  1. В DECORATE, создаем актор (декорацию), проигрывающий анимацию поднятой воды.
  2. В DECORATE, создаем снаряд (projectile), проигрывающий анимацию капелек воды.
  3. В TERRAIN, создаем slpash (брызги)
  4. В TERRAIN, Этот splash присваиваем к terrain (блок кода).
  5. В 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.

Готово. В итоге, получился классный эффект, если есть вопросы, задавайте их в комментариях.

Итоговый результат.

Урок по Terrain. Zdoom

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

Please disable your adblocker or whitelist this site!