粒子 - ReiKohaku/Sonolus-wiki-zh_cn GitHub Wiki

粒子

粒子为关卡提供粒子特效元素。

它包含:缩略图材质粒子数据。

缩略图

实现图像资源类型ParticleThumbnail

材质

实现图像资源类型ParticleTexture

粒子数据

实现JSON资源类型ParticleData

{
    "width": 512,
    "height": 512,
    "interpolation": true,
    "sprites": [
        {
            "x": 1,
            "y": 1,
            "w": 128,
            "h": 128
        },
        // 其它粒子精灵
    ],
    "effects": [
        {
            "id": 110001,
            "transform": {
                "x1": {
                    "x1": 1
                },
                "y1": {
                    "y1": 1
                },
                "x2": {
                    "x2": 1
                },
                "y2": {
                    "y2": 1
                },
                "x3": {
                    "x3": 1
                },
                "y3": {
                    "y3": 1
                },
                "x4": {
                    "x4": 1
                },
                "y4": {
                    "y4": 1
                }
            },
            "groups": [
                {
                    "count": 1,
                    "particles": [
                        {
                            "sprite": 0,
                            "color": "#fff",
                            "start": 0,
                            "duration": 1,
                            "x": {},
                            "y": {},
                            "w": {
                                "to": {
                                    "c": 1
                                },
                                "ease": "OutCubic"
                            },
                            "h": {
                                "to": {
                                    "c": 1
                                },
                                "ease": "OutCubic"
                            },
                            "r": {},
                            "a": {
                                "from": {
                                    "c": 1
                                }
                            }
                        },
                        // 其它粒子
                    ]
                },
                // 其它粒子特效组
            ]
        },
        // 其它粒子特效
    ]
}

interpolation

可选。如果为真,纹理过滤将使用双线性插值。

当启用了双线性插值时,需要采取必要措施防止纹理采样越界(atlas bleeding)。

effect.id

每个ID都有对应的标准化语义(尚未实现)。

effect.transform

通过变换表达式来变换输入的坐标。

effect.group

一个粒子的组。

每个粒子组都有它自己的变换表达式的随机变量组,并在其它粒子之间共享。

effect.group.particle

xywhra是粒子的属性。

effect.group.particle.<属性>.from

此属性起点值的变换表达式

effect.group.particle.<属性>.to

此属性终点值的变换表达式

effect.group.particle.<属性>.ease

此属性的easing类型。

变换表达式

变换表达式接受一组输入值,并输出一个值。

例如:

{
    "c": -1,
    "r1": 2
}

它与数学表达式c * -1 + r1 * 2相同,并可以通过给定的cr1进行计算。

可以使用以下的输入:

输入
c 常数,等于1
x1 x1*
y1 y1*
x2 x2*
y2 y2*
x3 x3*
y3 y3*
x4 x4*
y4 y4*
r1 区间[0, 1)内的一个数值
sinr1 2 * π * r1的sin值
cosr1 2 * π * r1的cos值
r2 区间[0, 1)内的一个数值
... ...
cosr4 2 * π * r4的cos值
  • 只有在变换中有效。
⚠️ **GitHub.com Fallback** ⚠️