Skip to content

Спецэффекты

Спецэффекты активируются с помощью команды @spawn, за которой следует имя эффекта. Например:

nani
@spawn ShakeBackground

— вызовет тряску фонового изображения.

Вы можете контролировать параметры эффекта через параметр params. Например:

nani
@spawn ShakeCharacter params:Kohaku,1

— встряхнёт персонажа с ID "Kohaku" один раз вместо стандартных 3.

Можно выборочно указать подмножество параметров, оставив остальные значения по умолчанию:

nani
@spawn ShakePrinter params:,,0.5

— обратите внимание, что первые два параметра (ID принтера и количество встряхиваний) пропущены и будут иметь значения по умолчанию, а третий параметр (длительность встряхивания) установлен на 0,5 секунды.

Вы можете обновить параметры эффекта, не перезапуская его, с помощью последовательных команд @spawn, например:

nani
; Начать медленно трясти персонажа `Kohaku` зацикленно,
; не дожидаясь окончания анимации (поскольку цикл бесконечен)
@spawn ShakeCharacter params:Kohaku,0,,,0.1 wait:false
Kohaku: It's rumbling!
; Встряхнуть ещё 3 раза с увеличенной амплитудой
@spawn ShakeCharacter params:Kohaku,3,,,0.8

Некоторые эффекты являются постоянными по умолчанию и должны быть остановлены вручную командой @despawn. Например:

nani
; Начать дождь
@spawn Rain
; Остановить дождь
@despawn Rain

Команды @despawn некоторых эффектов также могут принимать параметры (например, для управления длительностью затухания), например:

nani
; Остановить дождь постепенно в течение 10 секунд
@despawn Rain params:10

Если значения params не указаны, то будут использоваться параметры по умолчанию. Вы можете найти как параметры "start" (принимаемые командой @spawn), так и "stop" (принимаемые командой @despawn), доступные для каждого эффекта, а также их значения по умолчанию в приведенной ниже документации.

Можно запустить несколько эффектов одного и того же типа, добавив ID, отделенный символом # после имени эффекта, например:

nani
; Встряхнуть обоих `Kohaku` и `Yuko` зацикленно
@spawn ShakeCharacter#1 params:Kohaku,0 wait:false
@spawn ShakeCharacter#2 params:Yuko,0 wait:false

При остановке или обновлении таких воспроизводимых эффектов не забудьте указать ID:

nani
; Перестать трясти `Yuko`, увеличить амплитуду для `Kohaku`
@despawn ShakeCharacter#2
@spawn ShakeCharacter#1 params:k,0,,,1

Вы можете использовать любую строку для ID (это может быть число, как указано выше, или что-то более значимое, например @spawn ShakeCharacter#Kohaku), просто убедитесь, что она уникальна среди других ID, которые вы используете с данным эффектом.

Shake Printer

Встряхивает принтер с указанным ID, или же принтер по умолчанию.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
Printer IDStringnullID принтера для встряхивания. Встряхнет принтер по умолчанию, если не указано.
Shake countInteger2Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn.
Shake durationDecimal0.15Базовая длительность каждой итерации встряхивания, в секундах.
Duration variationDecimal0.25Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта.
Shake amplitudeDecimal0.5Базовая амплитуда смещения каждой итерации встряхивания, в юнитах.
Amplitude variationDecimal0.1Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта.
Shake horizontallyBooleanfalseСледует ли перемещать актора по горизонтали (по оси x).
Shake verticallyBooleantrueСледует ли перемещать актора вертикально (по оси y).

Имейте в виду, что когда UI настроен на режим "Screen Space Overlay", амплитуда встряхивания должна быть примерно в 100 раз больше, чем по умолчанию, для заметного эффекта.

Примеры

nani
; Встряхнуть стандартный принтер с параметрами по умолчанию
@spawn ShakePrinter

; Встряхнуть стандартный принтер по горизонтали 10 раз
@spawn ShakePrinter params:,10,,,,,true,false

; Начать трясти стандартный принтер зацикленно, вывести текст, остановить встряску
@spawn ShakePrinter params:,0 wait:false
What a shaky situation!
@despawn ShakePrinter

Shake Background

Встряхивает фон с указанным ID, или же основной фон.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
Background IDStringnullID фона для встряхивания. Встряхнет основной фон, если не указано.
Shake countInteger3Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn.
Shake durationDecimal0.15Базовая длительность каждой итерации встряхивания, в секундах.
Duration variationDecimal0.25Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта.
Shake amplitudeDecimal0.5Базовая амплитуда смещения каждой итерации встряхивания, в юнитах.
Amplitude variationDecimal0.5Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта.
Shake horizontallyBooleanfalseСледует ли перемещать актора по горизонтали (по оси x).
Shake verticallyBooleantrueСледует ли перемещать актора вертикально (по оси y).

Примеры

nani
; Встряхнуть основной фон с параметрами по умолчанию
@spawn ShakeBackground

; Встряхнуть фон `Video` дважды
@spawn ShakeBackground params:Video,2

Shake Character

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

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
Character IDStringnullID персонажа для встряхивания. Встряхнет случайного видимого персонажа, если не указано.
Shake countInteger3Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn.
Shake durationDecimal0.15Базовая длительность каждой итерации встряхивания, в секундах.
Duration variationDecimal0.25Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта.
Shake amplitudeDecimal0.5Базовая амплитуда смещения каждой итерации встряхивания, в юнитах.
Amplitude variationDecimal0.5Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта.
Shake horizontallyBooleanfalseСледует ли перемещать актора по горизонтали (по оси x).
Shake verticallyBooleantrueСледует ли перемещать актора вертикально (по оси y).

Примеры

nani
; Встряхнуть персонажа `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.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
Camera NameStringnullИмя камеры для встряхивания. Встряхнет основную камеру рендера Naninovel, если не указано.
Shake countInteger3Количество итераций встряхивания. Если установлено значение 0 или меньше, то эффект будет зациклен до тех пор, пока не будет остановлен с помощью @despawn.
Shake durationDecimal0.15Базовая длительность каждой итерации встряхивания, в секундах.
Duration variationDecimal0.25Рандомизированный дельта-модификатор, применяемый к базовой длительности эффекта.
Shake amplitudeDecimal0.5Базовая амплитуда смещения каждой итерации встряхивания, в юнитах.
Amplitude variationDecimal0.5Рандомизированный дельта-модификатор, применяемый к базовой амплитуде смещения эффекта.
Shake horizontallyBooleanfalseСледует ли перемещать актора по горизонтали (по оси x).
Shake verticallyBooleantrueСледует ли перемещать актора вертикально (по оси y).

Примеры

nani
; Встряхнуть основную камеру Naninovel с параметрами по умолчанию
@spawn ShakeCamera

; Встряхнуть основную камеру Naninovel горизонтально 5 раз
@spawn ShakeCamera params:,5,,,,,true,false

Animate Actor

Если вы хотите изменить (анимировать) параметры актора напрямую, воспользуйтесь командой @animate.

cover

Digital Glitch

Применяет эффект постобработки к основной камере, имитируя искажения и артефакты цифрового видео.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
DurationDecimal1Длительность эффекта, в секундах.
IntensityDecimal1Интенсивность эффекта в диапазоне от 0.0 до 10.0.

Примеры

nani
; Применить эффект глитча с параметрами по умолчанию
@spawn DigitalGlitch
; Применять эффект в течение 3.33 секунд с низкой интенсивностью
@spawn DigitalGlitch params:3.33,0.1

Rain

Создать систему частиц, имитирующую дождь.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
IntensityDecimal500Интенсивность дождя (количество частиц, появляющихся в секунду).
Fade-in timeDecimal5Система частиц будет постепенно увеличивать скорость появления частиц от 0 до целевого уровня в течение указанного времени, в секундах.
X velocityDecimal1Множитель горизонтальной скорости частиц. Используйте для изменения угла наклона капель дождя.
Y velocityDecimal1Множитель вертикальной скорости частиц.

Параметры остановки

ИмяТипПо умолчаниюОписание
Fade-out timeDecimal5Система частиц будет постепенно снижать скорость появления частиц с целевого уровня до 0 в течение указанного времени, в секундах.

Примеры

nani
; Начать интенсивный дождь в течение 10 секунд
@spawn Rain params:1500,10
; Остановить дождь за 30 секунд
@despawn Rain params:30

Snow

Создать систему частиц, имитирующую снег.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
IntensityDecimal100Интенсивность снега (количество частиц, появляющихся в секунду).
Fade-in timeDecimal5Система частиц будет постепенно увеличивать скорость появления частиц от 0 до целевого уровня в течение указанного времени, в секундах..

Параметры остановки

ИмяТипПо умолчаниюОписание
Fade-out timeDecimal5Система частиц будет постепенно снижать скорость появления частиц с целевого уровня до 0 в течение указанного времени, в секундах.

Примеры

nani
; Начать интенсивный снег в течение 10 секунд
@spawn Snow params:300,10
; Остановить снег за 30 секунд
@despawn Snow params:30

Sun Shafts

Создать систему частиц, имитирующую солнечные лучи.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
IntensityDecimal0.85Интенсивность лучей (непрозрачность).
Fade-in timeDecimal3Система частиц будет постепенно увеличивать скорость появления частиц от 0 до целевого уровня в течение указанного времени, в секундах.

Параметры остановки

ИмяТипПо умолчаниюОписание
Fade-out timeDecimal3Система частиц будет постепенно снижать скорость появления частиц с целевого уровня до 0 в течение указанного времени, в секундах.

Примеры

nani
; Создать интенсивные солнечные лучи в течение 10 секунд
@spawn SunShafts params:1,10
; Остановить лучи за 30 секунд
@despawn SunShafts params:30

Depth of Field (Bokeh)

Имитирует эффект глубины резкости (боке), при котором объект в фокусе остаётся чётким, в то время как остальное изображение размыто.

cover

Стартовые параметры

ИмяТипПо умолчаниюОписание
Focus Object NameStringnullИмя игрового объекта для установки фокуса (необязательно). При установке фокус всегда будет оставаться на игровом объекте, а параметр Focus Distance будет проигнорирован.
Focus DistanceDecimal10Расстояние от камеры Naninovel до точки фокусировки. Игнорируется, если указано Focus Object Name.
Focal LengthDecimal3.75Величина размытия, применяемая для областей вне фокуса; также определяет чувствительность фокуса.
DurationDecimal1Время интерполяции (как быстро параметры достигнут целевых значений).

Параметры остановки

ИмяТипПо умолчаниюОписание
Stop DurationDecimal1Длительность затухания (отключения) для достижения параметрами эффекта значений по умолчанию, когда эффект не виден.

Примеры

nani
; Включить эффект с параметрами по умолчанию и зафиксировать фокус на игровом объекте `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 таким же образом, как и со встроенными эффектами.

cover

Например, для приведённого здесь префаба Explosion.prefab, назначенного менеджером, следующие команды будут создавать и уничтожать префаб в сцене:

nani
@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).

cover

Вы можете переключать (включать, если отключено, и наоборот) добавленные компоненты с помощью скриптов Naninovel, используя нараметр toggle, и явно устанавливать состояние с помощью параметра set команды @camera. Например, предположим, что вы добавили компонент "Bloom Image Effect" к объекту камеры. Во-первых, выясните, каково имя типа компонента; обычно оно указывается в поле Script компонента.

cover

В нашем случае имя типа компонента — BloomImageEffect. Используйте имя типа для переключения этого компонента во время выполнения следующим образом:

nani
@camera toggle:BloomImageEffect

Вы можете переключать несколько компонентов одновременно, разделяя имена типов запятыми:

nani
@camera toggle:BloomImageEffect,Sepia,CameraNoise

И в случае, если вы хотите явно включить или отключить компонент:

nani
@camera set:BloomImageEffect.true,Sepia.false,CameraNoise.true

— будут включены компоненты BloomImageEffect и CameraNoise компонентов, а так же отключен компонент Sepia.

Состояние включенных в данный момент (и отключенных) пользовательских компонентов камеры будет автоматически сохранено и восстановлено при выполнении операций сохранения и загрузки игры.

Посмотрите следующее видео с примером добавления пользовательского эффекта фильтра камеры.

cover