Спецэффекты
Спецэффекты активируются с помощью команды @spawn
, за которой следует имя эффекта. Например:
@spawn ShakeBackground
— вызовет тряску фонового изображения.
Вы можете контролировать параметры эффекта через параметр params
. Например:
@spawn ShakeCharacter params:Kohaku,1
— встряхнёт персонажа с ID "Kohaku" один раз вместо стандартных 3.
Можно выборочно указать подмножество параметров, оставив остальные значения по умолчанию:
@spawn ShakePrinter params:,,0.5
— обратите внимание, что первые два параметра (ID принтера и количество встряхиваний) пропущены и будут иметь значения по умолчанию, а третий параметр (длительность встряхивания) установлен на 0,5 секунды.
Вы можете обновить параметры эффекта, не перезапуская его, с помощью последовательных команд @spawn
, например:
; Начать медленно трясти персонажа `Kohaku` зацикленно,
; не дожидаясь окончания анимации (поскольку цикл бесконечен)
@spawn ShakeCharacter params:Kohaku,0,,,0.1 wait:false
Kohaku: It's rumbling!
; Встряхнуть ещё 3 раза с увеличенной амплитудой
@spawn ShakeCharacter params:Kohaku,3,,,0.8
Некоторые эффекты являются постоянными по умолчанию и должны быть остановлены вручную командой @despawn
. Например:
; Начать дождь
@spawn Rain
; Остановить дождь
@despawn Rain
Команды @despawn
некоторых эффектов также могут принимать параметры (например, для управления длительностью затухания), например:
; Остановить дождь постепенно в течение 10 секунд
@despawn Rain params:10
Если значения params
не указаны, то будут использоваться параметры по умолчанию. Вы можете найти как параметры "start" (принимаемые командой @spawn
), так и "stop" (принимаемые командой @despawn
), доступные для каждого эффекта, а также их значения по умолчанию в приведенной ниже документации.
Можно запустить несколько эффектов одного и того же типа, добавив ID, отделенный символом #
после имени эффекта, например:
; Встряхнуть обоих `Kohaku` и `Yuko` зацикленно
@spawn ShakeCharacter#1 params:Kohaku,0 wait:false
@spawn ShakeCharacter#2 params:Yuko,0 wait:false
При остановке или обновлении таких воспроизводимых эффектов не забудьте указать ID:
; Перестать трясти `Yuko`, увеличить амплитуду для `Kohaku`
@despawn ShakeCharacter#2
@spawn ShakeCharacter#1 params:k,0,,,1
Вы можете использовать любую строку для ID (это может быть число, как указано выше, или что-то более значимое, например @spawn ShakeCharacter#Kohaku
), просто убедитесь, что она уникальна среди других ID, которые вы используете с данным эффектом.
Shake Printer
Встряхивает принтер с указанным ID, или же принтер по умолчанию.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Printer ID | String | null | ID принтера для встряхивания. Встряхнет принтер по умолчанию, если не указано. |
Shake count | Integer | 2 | Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn . |
Shake duration | Decimal | 0.15 | Базовая длительность каждой итерации встряхивания, в секундах. |
Duration variation | Decimal | 0.25 | Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта. |
Shake amplitude | Decimal | 0.5 | Базовая амплитуда смещения каждой итерации встряхивания, в юнитах. |
Amplitude variation | Decimal | 0.1 | Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта. |
Shake horizontally | Boolean | false | Следует ли перемещать актора по горизонтали (по оси x). |
Shake vertically | Boolean | true | Следует ли перемещать актора вертикально (по оси y). |
Имейте в виду, что когда UI настроен на режим "Screen Space Overlay", амплитуда встряхивания должна быть примерно в 100 раз больше, чем по умолчанию, для заметного эффекта.
Примеры
; Встряхнуть стандартный принтер с параметрами по умолчанию
@spawn ShakePrinter
; Встряхнуть стандартный принтер по горизонтали 10 раз
@spawn ShakePrinter params:,10,,,,,true,false
; Начать трясти стандартный принтер зацикленно, вывести текст, остановить встряску
@spawn ShakePrinter params:,0 wait:false
What a shaky situation!
@despawn ShakePrinter
Shake Background
Встряхивает фон с указанным ID, или же основной фон.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Background ID | String | null | ID фона для встряхивания. Встряхнет основной фон, если не указано. |
Shake count | Integer | 3 | Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn . |
Shake duration | Decimal | 0.15 | Базовая длительность каждой итерации встряхивания, в секундах. |
Duration variation | Decimal | 0.25 | Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта. |
Shake amplitude | Decimal | 0.5 | Базовая амплитуда смещения каждой итерации встряхивания, в юнитах. |
Amplitude variation | Decimal | 0.5 | Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта. |
Shake horizontally | Boolean | false | Следует ли перемещать актора по горизонтали (по оси x). |
Shake vertically | Boolean | true | Следует ли перемещать актора вертикально (по оси y). |
Примеры
; Встряхнуть основной фон с параметрами по умолчанию
@spawn ShakeBackground
; Встряхнуть фон `Video` дважды
@spawn ShakeBackground params:Video,2
Shake Character
Встряхивает персонажа с указанным ID, или же случайного видимого.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Character ID | String | null | ID персонажа для встряхивания. Встряхнет случайного видимого персонажа, если не указано. |
Shake count | Integer | 3 | Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn . |
Shake duration | Decimal | 0.15 | Базовая длительность каждой итерации встряхивания, в секундах. |
Duration variation | Decimal | 0.25 | Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта. |
Shake amplitude | Decimal | 0.5 | Базовая амплитуда смещения каждой итерации встряхивания, в юнитах. |
Amplitude variation | Decimal | 0.5 | Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта. |
Shake horizontally | Boolean | false | Следует ли перемещать актора по горизонтали (по оси x). |
Shake vertically | Boolean | true | Следует ли перемещать актора вертикально (по оси y). |
Примеры
; Встряхнуть персонажа `Kohaku` с параметрами по умолчанию
@spawn ShakeCharacter params:Kohaku
; Начать трясти случайного персонажа, вывести выбор для остановки и действовать соответственно
@spawn ShakeCharacter params:,0
@choice "Continue shaking" goto:.Continue
@choice "Stop shaking" goto:.Stop
@stop
# Stop
@despawn ShakeCharacter
# Continue
...
Shake Camera
Встряхивает основную камеру рендера Naninovel.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Camera Name | String | null | Имя камеры для встряхивания. Встряхнет основную камеру рендера Naninovel, если не указано. |
Shake count | Integer | 3 | Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn . |
Shake duration | Decimal | 0.15 | Базовая длительность каждой итерации встряхивания, в секундах. |
Duration variation | Decimal | 0.25 | Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта. |
Shake amplitude | Decimal | 0.5 | Базовая амплитуда смещения каждой итерации встряхивания, в юнитах. |
Amplitude variation | Decimal | 0.5 | Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта. |
Shake horizontally | Boolean | false | Следует ли перемещать актора по горизонтали (по оси x). |
Shake vertically | Boolean | true | Следует ли перемещать актора вертикально (по оси y). |
Примеры
; Встряхнуть основную камеру Naninovel с параметрами по умолчанию
@spawn ShakeCamera
; Встряхнуть основную камеру Naninovel горизонтально 5 раз
@spawn ShakeCamera params:,5,,,,,true,false
Animate Actor
Если вы хотите изменить (анимировать) параметры актора напрямую, воспользуйтесь командой @animate
.
Digital Glitch
Применяет эффект постобработки к основной камере, имитируя искажения и артефакты цифрового видео.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Duration | Decimal | 1 | Длительность эффекта, в секундах. |
Intensity | Decimal | 1 | Интенсивность эффекта в диапазоне от 0.0 до 10.0. |
Примеры
; Применить эффект глитча с параметрами по умолчанию
@spawn DigitalGlitch
; Применять эффект в течение 3.33 секунд с низкой интенсивностью
@spawn DigitalGlitch params:3.33,0.1
Rain
Создать систему частиц, имитирующую дождь.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Intensity | Decimal | 500 | Интенсивность дождя (количество частиц, появляющихся в секунду). |
Fade-in time | Decimal | 5 | Система частиц будет постепенно увеличивать скорость появления частиц от 0 до целевого уровня в течение указанного времени, в секундах. |
X velocity | Decimal | 1 | Множитель горизонтальной скорости частиц. Используйте для изменения угла наклона капель дождя. |
Y velocity | Decimal | 1 | Множитель вертикальной скорости частиц. |
Параметры остановки
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Fade-out time | Decimal | 5 | Система частиц будет постепенно снижать скорость появления частиц с целевого уровня до 0 в течение указанного времени, в секундах. |
Примеры
; Начать интенсивный дождь в течение 10 секунд
@spawn Rain params:1500,10
; Остановить дождь за 30 секунд
@despawn Rain params:30
Snow
Создать систему частиц, имитирующую снег.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Intensity | Decimal | 100 | Интенсивность снега (количество частиц, появляющихся в секунду). |
Fade-in time | Decimal | 5 | Система частиц будет постепенно увеличивать скорость появления частиц от 0 до целевого уровня в течение указанного времени, в секундах.. |
Параметры остановки
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Fade-out time | Decimal | 5 | Система частиц будет постепенно снижать скорость появления частиц с целевого уровня до 0 в течение указанного времени, в секундах. |
Примеры
; Начать интенсивный снег в течение 10 секунд
@spawn Snow params:300,10
; Остановить снег за 30 секунд
@despawn Snow params:30
Sun Shafts
Создать систему частиц, имитирующую солнечные лучи.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Intensity | Decimal | 0.85 | Интенсивность лучей (непрозрачность). |
Fade-in time | Decimal | 3 | Система частиц будет постепенно увеличивать скорость появления частиц от 0 до целевого уровня в течение указанного времени, в секундах. |
Параметры остановки
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Fade-out time | Decimal | 3 | Система частиц будет постепенно снижать скорость появления частиц с целевого уровня до 0 в течение указанного времени, в секундах. |
Примеры
; Создать интенсивные солнечные лучи в течение 10 секунд
@spawn SunShafts params:1,10
; Остановить лучи за 30 секунд
@despawn SunShafts params:30
Depth of Field (Bokeh)
Имитирует эффект глубины резкости (боке), при котором объект в фокусе остаётся чётким, в то время как остальное изображение размыто.
Стартовые параметры
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Focus Object Name | String | null | Имя игрового объекта для установки фокуса (необязательно). При установке фокус всегда будет оставаться на игровом объекте, а параметр Focus Distance будет проигнорирован. |
Focus Distance | Decimal | 10 | Расстояние от камеры Naninovel до точки фокусировки. Игнорируется, если указано Focus Object Name . |
Focal Length | Decimal | 3.75 | Величина размытия, применяемая для областей вне фокуса; также определяет чувствительность фокуса. |
Duration | Decimal | 1 | Время интерполяции (как быстро параметры достигнут целевых значений). |
Параметры остановки
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
Stop Duration | Decimal | 1 | Длительность затухания (отключения) для достижения параметрами эффекта значений по умолчанию, когда эффект не виден. |
Примеры
; Включить эффект с параметрами по умолчанию и зафиксировать фокус на игровом объекте `Kohaku`
@spawn DepthOfField params:Kohaku
; Отключить эффект за 10 секунд
@despawn DepthOfField params:10
; Установить точку фокусировки на расстоянии 10 единиц от камеры,
; фокусное расстояние до 0,95 и включить эффект за 3 секунды
@spawn DepthOfField params:,10,0.95,3
Добавление пользовательских эффектов
Автономные эффекты
Вы можете добавить пользовательский автономный эффект (реализованный через префаб, как встроенные эффекты "Rain" и "Snow"), добавив префаб эффекта через менеджеры создания ресурсов (Naninovel -> Resources -> Spawn
) и используя команды @spawn
и @despawn
таким же образом, как и со встроенными эффектами.
Например, для приведённого здесь префаба Explosion.prefab
, назначенного менеджером, следующие команды будут создавать и уничтожать префаб в сцене:
@spawn Explosion
@despawn Explosion
Если у вас есть много префабов для выведения и их неудобно назначать через меню редактора, можно просто поместить их в папку Resources/Naninovel/Spawn
, и они автоматически будут доступны в сценариях. Вы можете дополнительно организовать их с помощью подпапок, если хотите; в этом случае используйте косую черту ( /
) при ссылке на них в сценариях Naninovel. Например, ассет префаба, сохранённый как Resources/Naninovel/Spawn/Explosions/Boom01
может использоваться в сценариях как Explosions/Boom01
.
Кроме того, можно использовать систему адресируемых ассетов для ручного предоставления ресурсов. Чтобы предоставить доступ к ассету, назначьте адрес, равный пути, который вы использовали бы для его предоставления с помощью описанного выше метода, за исключением опущенной части "Resources/". Например, чтобы предоставить ассет префаба "Boom01", назначьте ему следующий адрес: Naninovel/Spawn/Boom01
. Имейте в виду, что адресируемый провайдер по умолчанию не используется в редакторе; вы можете включить его, включив свойство Enable Addressable In Editor
в меню конфигурации провайдера ресурсов.
Используйте встроенные префабы эффектов, хранящиеся в Naninovel/Prefabs/FX
, в качестве референсов для реализаций.
Эффекты камеры
Если вы хотите применить пользовательский эффект пост-обработки (aka эффект изображения или фильтр камеры, как встроенный эффект "Digital Glitch") к камере Naninovel, создайте префаб камеры, добавьте нужные компоненты эффектов к объекту камеры и присвоить префаб полю Custom Camera Prefab
в меню конфигурации камеры (Naninovel -> Configuration -> Camera
).
Вы можете переключать (включать, если отключено, и наоборот) добавленные компоненты с помощью скриптов Naninovel, используя нараметр toggle
, и явно устанавливать состояние с помощью параметра set
команды @camera
. Например, предположим, что вы добавили компонент "Bloom Image Effect" к объекту камеры. Во-первых, выясните, каково имя типа компонента; обычно оно указывается в поле Script
компонента.
В нашем случае имя типа компонента — BloomImageEffect
. Используйте имя типа для переключения этого компонента во время выполнения следующим образом:
@camera toggle:BloomImageEffect
Вы можете переключать несколько компонентов одновременно, разделяя имена типов запятыми:
@camera toggle:BloomImageEffect,Sepia,CameraNoise
И в случае, если вы хотите явно включить или отключить компонент:
@camera set:BloomImageEffect.true,Sepia.false,CameraNoise.true
— будут включены компоненты BloomImageEffect
и CameraNoise
компонентов, а так же отключен компонент Sepia
.
Состояние включенных в данный момент (и отключенных) пользовательских компонентов камеры будет автоматически сохранено и восстановлено при выполнении операций сохранения и загрузки игры.
Посмотрите следующее видео с примером добавления пользовательского эффекта фильтра камеры.