Skip to content

Текстовые эффекты

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

Создание текстового эффекта

Реализуйте ITextEffect. Он получает индекс буквы, текущий тик, частичный тик и именованные параметры из Ink-тега. Возвращает Vec2, смещение, применяемое к позиции отрисовки буквы.

Может быть лямбдой:

java
ITextEffect wave = (letterIndex, tick, partialTick, params) -> {
    float amplitude = Float.parseFloat(params.getOrDefault("amplitude", "2"));
    float offset = (float) Math.sin(tick * 0.1 + letterIndex * 0.5) * amplitude;
    return new Vec2(0, offset);
};

Или полноценным классом, если нужно состояние:

java
public class WaveEffect implements ITextEffect {
    @Override
    public Vec2 apply(int letterIndex, int tick, float partialTick, Map<String, String> params) {
        float amplitude = Float.parseFloat(params.getOrDefault("amplitude", "2"));
        float offset = (float) Math.sin(tick * 0.1 + letterIndex * 0.5) * amplitude;
        return new Vec2(0, offset);
    }
}

Регистрация

java
ctx.registerTextEffect("wave", wave);

Зарегистрированное имя, это то, что используется в Ink-теге для активации эффекта.