ANIMDEFS

Материал из DoomDev

(Различия между версиями)
Перейти к: навигация, поиск
-
Использование этого блока является альтернативой использованию блока ANIMATED для определения анимаций текстур и плоскостей. В отличие от ANIMATED этот блок является обычным текстовым файлом, который можно редактировать обычным редактором, таким как Notepad.
+
Ламп ANIMDEFS альтернатива лампу [[ANIMATED]]. Он обеспечивает большую гибкость, позволяя не только создавать анимированные текстуры из любого количества кадров и с любой скоростью, не только создавать текстуры выключателей, но и одновременно делать и то и другое. Выключатели могут быть анимированы так же, как и обычные текстуры, и даже могут издавать звуки (определенные в [[SNDINFO]] в любой точке анимации). Особые манипуляции (например, привязка камеры, деформации) с текстурами возможны только с помощью этого лампа<br>
 +
Кроме того, этот ламп содержит обычный текст, что упрощает его редактирование.
-
+
Хотя во всех командах ANIMDEFS можно указывать текстуры смещением лампа от базовой текстуры, так делать не рекомендуется. По возможности используйте имена текстур, так как такая запись легче для понимания и не привязывается к конкретному порядку лампов в [[WAD]]е. Индексная запись поддерживается только для совместимости с [[Hexen]] и старыми проектами.
-
Определение анимаций текстур начинается со строки:
+
В ANIMDEFS можно использовать следующие команды:
-
texture <name>
+
== TEXTURE/FLAT <имя> ==
-
где <name> ­­– имя первой текстуры в анимации. При использовании этой текстуры на стене, будет проигрываться назначенная здесь анимация. После того, как вы сообщили ZDoom’у, что определяете текстуру, нужно определить кадры анимации строками одного из двух следующих типов:
+
Начинает определение анимации. TEXTURE определяет анимацию текстуры, а FLAT - анимацию пола. Такое разделение несколько утратило свою строгость, так как начиная с ZDoom 2.0.48 flat и texture взаимозаменяемы. Единственное различие - порядок поиск при наличии повторяющихся имен: TEXTURE означает начало поиска с [[TEXTURE]]x-лампов, а FLAT с имен между F_START и F_END.
 +
Оба типа поддерживают следующие подкоманды:
-
pic <n> tics <time>
+
=== PIC <номер|имя> tics <длительность> | rand <мин> <макс> ===
-
или
+
Определяет один кадр анимации. При таком определении будет анимирована только базовая текстура.<br>
 +
Используемая текстура может быть указана либо по индексу (при этом базовая текстура имеет индекс 1, последущие индексы означают текстуры, следующие за ней в списке), либо по имени (рекомендуемый способ). Если текстура указана индексом, не требуется как-либо сортировать индексы, один и тот же индекс может быть использован несколько раз. Если текстура кадра указана по имени, порядок в [[WAD]]е или [[TEXTURE]]x никак не влияет.<br>
 +
Длительность каждого кадра может быть либо постоянной либо случайно выбираться. Для постоянной длительности используйте ''''tics''' <длительность (в [[тик]]ах)>'. Для случайного значения - ''''rand''' <мин> <макс>', где мин и макс - минимальная и максимальная длительность в [[тик]]ах соответственно. Длительность в тиках может быть дробной (например, 4.3 тика).
-
pic <n> rand <min> <max>
+
=== RANGE <номер|имя> tics <длительность> | rand <мин> <макс> | Oscillate
 +
Определяет анимационный ряд. ''Номер'' или ''имя'' - последний кадр ряда. Обратите внимание, если указан номер n, у анимации будет n+1 кадров. '''tics''' и '''rand''' означают то же, что и для PIC. Но в отличие от PIC, анимация, определенная таким образом, сделает анимированными все текстуры, указанные кадрами (как в [[ANIMATED]]). Если указан флаг '''Oscillate''', по достижении конца анимации пойдет в обратную сторону, а не повторится с первого кадра.
-
где <n> – используемая для этого кадра текстура, причем текстура, названная выше, будет кадром 1. Последующие текстуры определяются в том порядке, в котором они появляются в блоке TEXTURES. Если используется tics, то <time> – число тиков перед появлением следующего кадра. Если используется rand, то, перед появлением следующего кадра, текущий кадр будет отображаться в течение случайного периода времени, в интервале от <min> до <max> тиков/ограниченного значениями <min> и <max>.
+
=== ALLOWDECALS ===
 +
По умолчанию у анимированных текстур [[декали]] отключены. Эта команда включает [[декали]] для данной текстуры.
-
+
== SWITCH <имя> ==
 +
Начинает определение нового выключателя. Допустимы следующие подкоманды:
-
Таким же образом определяются анимации плоскостей, только начинаются они со строки:
+
=== ON ===
 +
Определяет анимацию, проигрываемую при активации выключателя.
-
flat <name>
+
=== OFF ===
 +
Определяет анимацию, проигрываемую при сбросе выключателя.
 +
=== SOUND <имя звука>===
 +
Определяет звук издаваемый выключателем
 +
 +
=== PIC <номер|имя> tics <длительность> | rand <мин> <макс> ===
 +
Определяет один кадр данной анимации. Синтаксис отличается от используемых в [[ANIMDEFS#TEXTURE/FLAT <имя>|TEXTURE/FLAT]] только обязательностью указания текстуры по имени.
 +
 +
== WARP texture|flat <имя> [allowdecals]
 +
Определяет эффект деформирования (warping) для пола или текстуры. Он схож с эффектом деформирования у воды в Quake или Quake II.<br>
 +
Этот эффект может быть использован со спрайтами (если их размеры равны степеням двух). Хотя полученный эффект будет несколько странен, полезно знать, что такая возможность существует.<br>
 +
Как и для других анимированных текстур, допустим флаг '''allowdecals''', снимающий запрет на размещение декалей на анимированных текстурах.
 +
 +
== WARP2 texture|flat <имя> [allowdecals]
 +
То же, что WARP, но улучшен эффект воды.
 +
 +
== ANIMATEDDOOR <имя> ==
 +
Начинает определение анимации для использования спецификатором [[Door_Animated]].
 +
Допустимы следующие подкоманды:
 +
 +
=== OPENSOUND <звук> ===
 +
Определяет звук, проигрываемый при открытии двери. Звук должен быть определен в лампе [[SNDSEQ]].
 +
 +
=== CLOSESOUND <звук> ===
 +
Определяет звук, проигрываемый при закрытии двери. Звук должен быть определен в лампе [[SNDSEQ]].
 +
 +
=== PIC <номер|имя> ===
 +
Определяет один кадр анимации двери. Используемая текстура может быть указана либо по индексу (при этом базовая текстура имеет индекс 1, последущие индексы означают текстуры, следующие за ней в списке), либо по имени (рекомендуемый способ). Если текстура указана индексом, не требуется как-либо сортировать индексы, один и тот же индекс может быть использован несколько раз. Если текстура кадра указана по имени, порядок в [[WAD]]е или [[TEXTURE]]x никак не влияет. Кадры анимации должны быть упорядочены от состояния "полностью закрыто" к состоянию "полностью закрыто", количество кадров не ограничено.
 +
 +
== CAMERATEXTURE <имя текстуры> <ширина> <высота> [fit <ширина> <высота>]
 +
Определяет текстуры, в которую может быть отражено изображение с камеры. Если текстура с указанным именем существует, изображение будет отмасштабировано в рамки текстуры. Кроме того, рамки масштабирования можно указать принудительно при помощи ключевого слова '''fit'''.
 +
 +
Квадратные текстуры требуют меньше памяти, чем неквадратные. Однако если необходима камеры, которая может видеть отображающую ее изображение текстуру, необходимо использовать неквадратную текстуру.
 +
 +
Для назначения текстуры камере используется [[ACS]]-функция [[SetCameraToTexture]].
 +
 +
== Примеры ==
 +
Анимированный пол:
 +
flat x_001
 +
    pic 1 tics 5
 +
    pic 2 tics 5
 +
    pic 3 tics 5
 +
    pic 4 tics 5
 +
 +
Анимировання текстура с разрешенными декалями:
 +
texture x_water1
 +
    allowdecals
 +
    pic x_water1 rand 5 12
 +
    pic x_water2 rand 5 12
 +
    pic x_water3 rand 5 12
 +
    pic x_water4 rand 5 12
 +
 +
Обычный выключатель:
 +
switch SW_1_UP on sound Switch1 pic SW_1_DN tics 0
 +
switch SW_1_DN off sound Switch2 pic SW_1_UP tics 0
 +
 +
Выключатель с анимацией переключения:
 +
switch doom 3 sw1nj15
 +
on sound switches/lever2
 +
pic sw1nj15b tics 8
 +
pic sw1nj15c tics 8
 +
pic sw2nj15 tics 8
   
   
 +
off sound switches/lever2
 +
pic sw1nj15c tics 8
 +
pic sw1nj15b tics 8
 +
pic sw1nj15 tics 0
 +
 +
Деформируемый пол (the second variation allows decals to appear):
 +
warp flat qslime2
 +
warp flat qslime2 allowdecals
 +
 +
Текстура анимированной двери:
 +
animateddoor DORIRS01
 +
    opensound DoorOpenAirlock
 +
    closesound DoorCloseAirlock
 +
    pic DORIRS01
 +
    pic DORIRS02
 +
    pic DORIRS03
 +
    pic DORIRS04
 +
    pic DORIRS05
 +
    pic DORIRS06
 +
    pic DORIRS07
 +
    pic DORIRS08
 +
 +
Текстура 64x64 для камеры:
 +
cameratexture CAMTEX1 64 64
 +
 +
Текстура 80x50 для камеры масштабирующая изображение с камеры разрешением 100x50:
 +
cameratexture CAMTEX2 100 50 fit 80 50
 +
 +
Камера разрешения 64x64, замещающая текстуру STARTAN2. Так как '''fit''' не указан, то изображение будет отмасштабировано к размерам текстуры (128x128):
 +
cameratexture STARTAN2 64 64
 +
 +
То же, что в прошлом случае, но при помощи '''fit''' запрещено масштабирование:
 +
cameratexture STARTAN2 64 64 fit 64 64
-
Используя блок ANIMDEFS, также можно применить к текстуре эффект деформирования. Он подобен эффекту, наблюдаемому у жидких текстур в играх на движке Quake. Пока возможно деформировать только плоскости. Для этого используется следующая строка:
 
-
warp flat <name>
+
{{zdoomwikibased}}{{zdoom}}

Версия 21:29, 11 февраля 2008

Личные инструменты