ANIMDEFS
Материал из DoomDev
(Различия между версиями)
Текущая версия (21:31, 11 февраля 2008) (просмотреть исходный код) м (*syntax) |
|||
- | + | Ламп ANIMDEFS альтернатива лампу [[ANIMATED]]. Он обеспечивает большую гибкость, позволяя не только создавать анимированные текстуры из любого количества кадров и с любой скоростью, не только создавать текстуры выключателей, но и одновременно делать и то и другое. Выключатели могут быть анимированы так же, как и обычные текстуры, и даже могут издавать звуки (определенные в [[SNDINFO]] в любой точке анимации). Особые манипуляции (например, привязка камеры, деформации) с текстурами возможны только с помощью этого лампа<br> | |
+ | Кроме того, этот ламп содержит обычный текст, что упрощает его редактирование. | ||
- | + | Хотя во всех командах ANIMDEFS можно указывать текстуры смещением лампа от базовой текстуры, так делать не рекомендуется. По возможности используйте имена текстур, так как такая запись легче для понимания и не привязывается к конкретному порядку лампов в [[WAD]]е. Индексная запись поддерживается только для совместимости с [[Hexen]] и старыми проектами. | |
- | + | В ANIMDEFS можно использовать следующие команды: | |
- | + | == TEXTURE/FLAT <имя> == | |
- | + | Начинает определение анимации. TEXTURE определяет анимацию текстуры, а FLAT - анимацию пола. Такое разделение несколько утратило свою строгость, так как начиная с ZDoom 2.0.48 flat и texture взаимозаменяемы. Единственное различие - порядок поиск при наличии повторяющихся имен: TEXTURE означает начало поиска с [[TEXTURE]]x-лампов, а FLAT с имен между F_START и F_END. | |
+ | Оба типа поддерживают следующие подкоманды: | ||
- | + | === PIC <номер|имя> tics <длительность> | rand <мин> <макс> === | |
- | или | + | Определяет один кадр анимации. При таком определении будет анимирована только базовая текстура.<br> |
+ | Используемая текстура может быть указана либо по индексу (при этом базовая текстура имеет индекс 1, последущие индексы означают текстуры, следующие за ней в списке), либо по имени (рекомендуемый способ). Если текстура указана индексом, не требуется как-либо сортировать индексы, один и тот же индекс может быть использован несколько раз. Если текстура кадра указана по имени, порядок в [[WAD]]е или [[TEXTURE]]x никак не влияет.<br> | ||
+ | Длительность каждого кадра может быть либо постоянной либо случайно выбираться. Для постоянной длительности используйте ''''tics''' <длительность (в [[тик]]ах)>'. Для случайного значения - ''''rand''' <мин> <макс>', где мин и макс - минимальная и максимальная длительность в [[тик]]ах соответственно. Длительность в тиках может быть дробной (например, 4.3 тика). | ||
- | + | === RANGE <номер|имя> tics <длительность> | rand <мин> <макс> | Oscillate === | |
+ | Определяет анимационный ряд. ''Номер'' или ''имя'' - последний кадр ряда. Обратите внимание, если указан номер n, у анимации будет n+1 кадров. '''tics''' и '''rand''' означают то же, что и для PIC. Но в отличие от PIC, анимация, определенная таким образом, сделает анимированными все текстуры, указанные кадрами (как в [[ANIMATED]]). Если указан флаг '''Oscillate''', по достижении конца анимации пойдет в обратную сторону, а не повторится с первого кадра. | ||
- | + | === ALLOWDECALS === | |
+ | По умолчанию у анимированных текстур [[декали]] отключены. Эта команда включает [[декали]] для данной текстуры. | ||
- | + | == SWITCH <имя> == | |
+ | Начинает определение нового выключателя. Допустимы следующие подкоманды: | ||
- | + | === ON === | |
+ | Определяет анимацию, проигрываемую при активации выключателя. | ||
- | + | === 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 | ||
- | |||
- | + | {{zdoomwikibased}}{{zdoom}} |