Skip to content

Efeito de Dados de Partículas

O efeito de dados de partículas é usado pelo aplicativo Sonolus para controlar a renderização do efeito de partículas.

Sintaxe

ts
type ParticleDataEffect = {
    name: ParticleEffectName | (string & {})
    transform: ParticleDataTransform
    groups: ParticleDataGroup[]
}

type ParticleDataTransform = Record<
    `${'x' | 'y'}${1 | 2 | 3 | 4}`,
    Partial<
        Record<
            | 'c'
            | `${'x' | 'y'}${1 | 2 | 3 | 4}`
            | `${'r' | 'sinr' | 'cosr'}${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8}`,
            number
        >
    >
>

type ParticleDataGroup = {
    count: number
    particles: ParticleDataGroupParticle[]
}

type ParticleDataGroupParticle = {
    sprite: number
    color: string
    start: number
    duration: number
    x: ParticleDataGroupParticleProperty
    y: ParticleDataGroupParticleProperty
    w: ParticleDataGroupParticleProperty
    h: ParticleDataGroupParticleProperty
    r: ParticleDataGroupParticleProperty
    a: ParticleDataGroupParticleProperty
}

type ParticleDataGroupParticleProperty = {
    from?: ParticleDataGroupParticlePropertyExpression
    to?: ParticleDataGroupParticlePropertyExpression
    ease?:
        | 'linear'
        | `${'in' | 'out' | 'inOut' | 'outIn'}${
              | 'Sine'
              | 'Quad'
              | 'Cubic'
              | 'Quart'
              | 'Quint'
              | 'Expo'
              | 'Circ'
              | 'Back'
              | 'Elastic'}`
        | 'none'
}

type ParticleDataGroupParticlePropertyExpression = Partial<
    Record<'c' | `${'r' | 'sinr' | 'cosr'}${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8}`, number>
>

name

Veja Nome do Efeito de Partícula .

transform

Veja Transformação de Efeito de Partícula .

groups.count

Quantidade de vezes que as partículas no grupo serão criadas.

groups.particles

As partículas compartilharão as mesmas variáveis aleatórias ( r1 a r8 ) em cada instância de seu grupo.

groups.particles.sprite

Índice do sprite a ser usado para a partícula.

groups.particles.color

Sequência de cores HTML para cor de partículas.

Formatos suportados: #RGB e #RRGGBB .

groups.particles.start

Hora de início da partícula, de 0 a 1 .

Um valor de 0.25 fará com que a partícula inicie quando o efeito estiver 25% concluído.

groups.particles.duration

Duração da partícula, de 0 a 1 .

Um valor de 0.75 fará com que a partícula dure 75% da duração do efeito.

groups.particles.[x/y/w/h/r/a]

Animação das coordenadas x, y, largura, altura, rotação e propriedades alfa da partícula.

O valor da propriedade será animado from to com curva de ease de suavização.

A posição ( x / y ) e o tamanho ( w / h ) das partículas são interpolados bilinearmente dentro de um sistema de coordenadas de (-1, -1) (canto inferior esquerdo) a (1, 1) (canto superior direito). A rotação das partículas utiliza radianos, girando no sentido anti-horário. O alfa das partículas varia de 0 a 1 .

groups.particles.[x/y/w/h/r/a].[from/to]

Veja Expressão de propriedade de partícula de efeito de partícula .

Exemplos

json
{
    "name": "#NOTE_CIRCULAR_TAP_RED",
    "transform": {
        "x1": { "x1": 1 }
        // ...
    },
    "groups": [
        {
            "count": 1,
            "particles": [
                {
                    "sprite": 0,
                    "color": "#ff0000",
                    "start": 0,
                    "duration": 1,
                    "x": {
                        "from": { "c": -1 },
                        "to": { "c": 1 },
                        "ease": "outCubic"
                    }
                    // ...
                }
                // ...
            ]
        }
        // ...
    ]
}