--- front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/spark_EmitterSizeScaleEffect.5458f74c.gif hard: 入门 time: 30分钟 --- # 特效属性详细说明 ## 粒子特效基本属性说明 ### 特效方向direction #### direction 属性 | 说明 ---- | ---------------------------------- 描述 | 设置粒子方向 默认值 | `Inwards` 参数范围 | `Inwards`, `Outwards`, `Direction` - Direction, 使用粒子初始方向方向(每个方向在 `directionMin` 和 `directionMax` 之间随机) ![Direction](./images/spark_ParticleDirection.gif) - Inwards, 使用发射器形状的向心方向 ![Direction](./images/spark_ParticleInwards.gif) - Outwards, 使用发射器形状的离心方向 ![Direction](./images/spark_ParticleOutwards.gif) #### directionMin 属性 | 说明 ---- | ------------------------------------- 描述 | 设置粒子随机方向的最小值, 分别为 x, y, z 轴方向, 负值代表反向 默认值 | `-1.0 -1.0 -1.0` 参数范围 | -1.0 ~ 1.0 提示 | 该参数仅在方向为`Direction`时有效 #### directionMax 属性 | 说明 ---- | ------------------------------------------------------------ 描述 | 设置粒子随机方向的最大值, 分别为 x, y, z 轴方向, 负值代表反向 默认值 | `1.0 1.0 1.0` 参数范围 | -1.0 ~ 1.0 提示 | 该参数仅在方向为`Direction`时有效, directionMax各个方向需要大于directionMin的相应值 ```json { "direction": { "value": "Inwards", "min": "-1.0 -1.0 -1.0", "max": "1.0 1.0 1.0" } } ``` ### 初始速度velocity 属性 | 说明 ---- | ----------------------- 描述 | 粒子的初始速度, 矢量, 分别为最小值和最大值 默认值 | `1.0 1.0` 参数范围 | -100000.0 ~ 100000.0 ```json { "velocity": { "value": "1.0 1.0" } } ``` ### 恒定力constantforce 属性 | 说明 ---- | ------------------------- 描述 | 粒子在 x, y, z 轴上所受恒定力, 相当于粒子运动过程中的加速度 默认值 | `0.0 0.0 0.0` 参数范围 | -100000.0 ~ 100000.0 ```json { "constantforce": { "value": "0.0 0.0 0.0" } } ``` ### 阻尼力dampingforce 属性 | 说明 ---- | -------------------- 描述 | 方向与粒子速度方向相反的加速度 默认值 | `0.0` 参数范围 | -100000.0 ~ 100000.0 提示 | 当为负数时, 为加速度 说明 | v 为粒子当前速度 则计算为 `v = v - dampingforce * v` ```json { "constantforce": { "value": "0.0 0.0 0.0" } } ``` ### 初始尺寸particlesize 属性 | 说明 ---- | ------------------------ 描述 | 面向摄像机的二维平面(x, y)上的粒子初始尺寸 默认值 | `0.1 0.1` 参数范围 | -100000.0 ~ 100000.0 提示 | max 各个方向需要大于 min 的相应值 ```json { "particlesize": { "min": "0.1 0.1", "max": "0.1 0.1" } } ``` ### 初始旋转rotation 属性 | 说明 ---- | -------------------------- 描述 | 面向摄像机的二维平面(x, y)上的粒子的初始旋转量,即绕z轴的旋转的角度 默认值 | `0.0` 参数范围 | -999999.0 ~ 999999.0 提示 | 正数为逆时针, 负数为顺时针 提示 | 粒子的初始旋转介于min与max之间 ```json { "rotation": { "min": "0.0", "max": "0.0" } } ``` ### 旋转速度rotationspeed 属性 | 说明 ---- | ------------------------ 描述 | 面向摄像机的二维平面(x, y)上的粒子旋转速度 默认值 | `0.0` 参数范围 | -999999.0 ~ 999999.0 提示 | 正数为逆时针, 负数为顺时针 提示 | 粒子的实际旋转速度介于min与max之间 ```json { "rotationSpeed": { "min": "0.0", "max": "0.0" } } ``` ### 生存时间timetolive 属性 | 说明 ---- | -------------------- 描述 | 粒子的生存时间 默认值 | `1.0` 参数范围 | 0.0 ~ 100000.0 提示 | 粒子的实际生存时间介于min与max之间,例如下列参数则设定粒子的存在时间为 1 - 2 秒 ```json { "timetolive": { "min": "1.0", "max": "2.0" } } ``` ### 预热prewarm 属性 | 说明 ---- | -------------------- 描述 | 开启后粒子发射器在游戏初始就开始发射粒子 默认值 | 不开启 ```json { "prewarm": true } ``` ### 独立生存时间independent 属性 | 说明 ---- | -------------------- 描述 | 开启后每个粒子的生命周期都会独立计算,关闭发射器粒子不会立即消失,而是会按照自身的生命周期逐渐消散 默认值 | `false` 参数范围 | `false`,`true` ```json { "independent": false } ``` ### 层级layer 属性 | 说明 ---- | -------------------------- 描述 | 支持粒子前后层级效果,当数值越大,渲染越晚,显示越靠前 默认值 | `1` 参数范围 | 0 ~ 15 ```json { "layer": 1 } ``` ## 粒子特效动态属性说明 ### 动态尺寸sizedelta 属性 | 说明 ---- | -------------------- 描述 | 用来控制粒子尺寸在不同时间的大小变化 默认值 | 不开启 提示 | 包含相对时间和绝对时间两种形式 ![Direction](./images/spark_DynamicSizeEffectPanel.png) ![Direction](./images/spark_DynamicSizeEffect.gif) ```json "sizedelta": [ { "scale": "1.000 1.000", "time": "27%" }, { "scale": "3.000 3.000", "time": "57%" } { "scale": "1.000 1.000", "time": "89%" } ] ``` ### 动态颜色colorfade 属性 | 说明 ---- | -------------------- 描述 | 用来控制粒子尺寸在不同时期的颜色变化 默认值 | 不开启 提示 | 颜色值在不同的点之间是按照线性变化,支持透明度设置 ![Direction](./images/particle_DynamicColorEffectPanel.png) ![Direction](./images/spark_DynamicColorEffect.gif) ```json "colorfade": [ { "color": "1.00 1.00 1.00 1.00", "time": "0.0" }, { "color": "0.67 0.00 0.00 0.44", "time": "0.48" }, { "color": "1.00 1.00 0.24 1.00", "time": "1.0" } ] ``` ### 粒子扰动disorder ![Direction](./images/spark_ParticleDisorder.gif) 属性 | 说明 --------- | ---------------------- 描述 | 支持粒子能够在 x, y, z 轴上随机扰动 min | 粒子在 x, y, z 轴上的最小扰动幅度 max | 粒子在 x, y, z 轴上的最大扰动幅度 interval | 粒子扰动时间间隔(秒) increment | 每次扰动后递增幅,多用于实现散开效果 提示 | 粒子的实际扰动介于min与max之间 ```json { "disorder": { "min": "0.0 0.0 0.0", "max": "0.0 0.0 0.0", "interval": "0.0", "increment": "0.0" } } ``` ## 粒子发射器属性说明 ### 最大粒子数量numparticles ![Direction](./images/spark_ParticleNumber.gif) 属性 | 说明 ---- | ----------- 描述 | 粒子同时存在的最大数量 默认值 | `10` 参数范围 | 0 ~ 100000 提示 | 同屏显示的粒子数量还会受到发射速率的限制 ```json { "numparticles": { "value": "10" } } ``` ### 发射周期长度activetime 属性 | 说明 ---- | ---------------------------- 描述 | 粒子发射器连续发射粒子的时间,此期间会一直连续发射粒子 默认值 | `0.0` 参数范围 | 0.0 ~ 100000.0 提示 | 需要配合发射冷却时间 inactivetime 联合使用 说明 | 可将其可以视为发射器生命周期,方便调试有时间限制的效果。如果设置为 0,粒子发射器会一直发射, 不会停歇 ```json { "activetime": { "value": "0.0" } } ``` ### 发射周期间隔inactivetime 属性 | 说明 ---- | ---------------------------- 描述 | 两个发射周期之间的间隔 默认值 | `0.0` 参数范围 | 0.0 ~ 100000.0 提示 | 需要配合连续发射时间 activetime 联合使用 说明 | 可将其视为发射器冷却时间 ```json { "inactivetime": { "value": "0.0" } } ``` ### 发射速率emissionrate 属性 | 说明 ---- | ------------------------------- 描述 | 发射周期内粒子发射器每秒发射粒子数 默认值 | `10.0` 参数范围 | 0.0 ~ 100000.0 提示 | 该速率仅会在发射周期长度内生效,当处于发射间隔时,将停止发射 提示 | 粒子的实际发射速率介于min与max之间 ```json { "emissionrate": { "min": "10.0", "max": "10.0" } } ``` ### 发射路径emitterpath ![Direction](./images/spark_ParticlePath.gif) 属性 | 说明 ---- | ----------------------------- 描述 | 粒子发射器发射的路径,多用于配置爆炸等效果 参数范围 | 偏移 offset 无限制,时间 time 需要在粒子生存周期的最大值里 ![image](./images/emitterpath.png) ```json { "emitterpath": [ {"offset": "1.0 0.0 1.0", "time": "0.0"}, {"offset": "-1.0 0.0 -1.0", "time": "0.1"}, {"offset": "0.0 1.0 0.0", "time": "0.2"}, ] } ``` ### 发射器形状emittertype 属性 | 说明 ---- | ----------------------------------------- 描述 | 粒子发射器的形状 默认值 | `Spere` 参数范围 | `Sphere`, `Hemisphere`, `Cylinder`, `Box`,`Cone` - Sphere, 球形 - Hemisphere, 半球形 - Cylinder, 柱面(圆柱形) - Box, 方形 - Cone, 锥形 ```json { "emittertype": { "value": "Spere" } } ``` ### 发射器尺寸emittersize 属性 | 说明 ---- | -------------- 描述 | 粒子发射器包围盒的尺寸,分别对应 x, y, z 轴 默认值 | `0.0` `0.0` `0.0` 参数范围 | 0.0 ~ 100000.0 ```json { "emittersize": { "value": "0.0 0.0 0.0" } } ``` ### 发射器尺寸缩放系数emitterscale 属性 | 说明 ---- | --------------------------- 描述 | 粒子发射器在不同时间的缩放系数,用于扩展发射器的大小 默认值 | 不开启 参数范围 | `value` 无限制,`time` 需要在粒子最大生存时间内 说明 | 该参数对已发射的粒子无影响 ![Direction](./images/spark_SizeScalePanel.png) ![Direction](./images/spark_EmitterSizeScaleEffect.gif) ```json { "emitterscale": [ {"time": "0.26", "value": "0.9"}, {"time": "1.41", "value": "3.0"}, {"time": "2.11", "value": "0.9"} ] } ``` ### 发射器表层厚度比例thickness 属性 | 说明 ---- | ---------------------------------------- 描述 | 发射器表层厚度比例, 当为 0 时,发射器仅包含表面形状, 当为 1 时, 发射器为实心 默认值 | `0.0` 参数范围 | 0.0 ~ 1.0 ```json { "thickness": { "value": "0.0" } } ``` ## 粒子特效资源属性说明 ### 材质material 属性 | 说明 --- | ------------------------------ 描述 | 粒子材质 默认值 | `"materials/particles.material"` ```json { "material": { "name": "materials/particles.material" } } ``` ### 贴图texture 属性 | 说明 ---- | ----------------------- 描述 | 粒子贴图,仅支持显示整张贴图 默认值 | `"textures/particle/sun"` 参数范围 | 无 ```json { "texture": { "name": "textures/particle/sun" } } ``` ### 序列帧ani 属性 | 说明 ---- | ------------- 描述 | 粒子特效里使用的序列帧贴图 默认值 | "" 参数范围 | 无 ```json "texture": { "ani": { "fps": "1", "name": "textures/particle/my123_2" }, "name": "textures/particle/my123_2" } ``` ### 序列帧帧率fps 属性 | 说明 ---- | ---------------- 描述 | 粒子特效里携带的序列帧的播放速度,每秒播放帧数 默认值 | `0` ```json "texture": { "ani": { "fps": "1", "name": "textures/particle/my123_2" }, "name": "textures/particle/my123_2" } ``` ### 序列帧随机播放shuffle 属性 | 说明 ---- | ---------------- 描述 | 粒子特效里携带的序列帧是否随机播放各个帧,如果选择打开则播放序列帧是乱序的,关闭则是按顺序播放 默认值 | false ```json "texture": { "ani": { "fps": "1", "name": "textures/particle/my123_2", "shuffle": true }, "name": "textures/particle/my123_2" } ``` ## 粒子特效渲染属性说明 ### 序列帧循环enableloop 属性 | 说明 ---- | --------------- 描述 | 当粒子的生命周期大于所携带的序列帧的时间时,用于控制序列帧是否循环播放 默认值 | `true` 参数范围 | `false`, `true` ```json { "enableloop": { "enable": "true" } } ``` ### 相对挂点运动relative 属性 | 说明 ---- | -------------------- 描述 | 用于控制粒子特效的运行轨迹是否相对于挂点 默认值 | `true` 参数范围 | `true`, `false` ```json { "relative": { "value": "true" } } ``` ### 混合模式blend 属性 | 说明 ---- | -------------- 描述 | 用于控制不同粒子特效混合效果 默认值 | `blend` 参数范围 | `blend`, `add`, `Opaque` - blend, 透明度混合, 能保证两个颜色显示正常 - add, 颜色值累加 - Opaque, 不透明 ```json { "blend": { "name": "blend" } } ``` ### 粒子朝向模式faceCameraMode 属性 | 说明 ---- | --------------------------------------------------- 描述 | 用于控制粒子的朝向 默认值 | `Rotate XYZ` 参数范围 | `Rotate XYZ`, `Rotate Y`, `Horizontal`, `Direction`,`Direction Horizontal` - Rotate XYZ, 粒子朝向相机 - Rotate Y, 粒子朝向地面 - Horizontal, 粒子朝向水平方向 - Direction, 粒子朝向为速度方向 - Direction Horizontal,粒子朝向水平速度方向 ```json { "faceCameraMode": { "value": "Rotate XYZ" } } ``` ### 深度测试depthtest 属性 | 说明 ---- | ----------------- 描述 | 用于控制粒子特效是否开启深度检测 默认值 | `false` 参数范围 | `true`, `false` 说明 | 如果关闭深度检测,粒子特效会遮盖所在的屏幕平面渲染的东西,如果开启,则会依据深度进行相关渲染 - 关闭深度检测 ![](./images/ParticleDepthCheckUnEnableEffect.gif) - 打开深度检测 ![](./images/ParticleDepthCheckEnableEffect.gif) ```json { "depthtest": { "enable": "false" } } ``` ## 序列帧特效播放属性说明 ### 循环播放loop 属性 | 说明 ---- | --------------- 描述 | 用于控制序列帧特效是否循环播放 默认值 | `true` 参数范围 | `true`, `false` ```json { "loop": true } ``` ### 帧随机播放shuffle 属性 | 说明 ---- | --------------- 描述 | 用于控制序列帧特效是否随机播放,即序列帧的播放顺序不是按照固定顺序 默认值 | `false` 参数范围 | `true`, `false` 提示 | 序列帧数量越多效果越明显 ```json { "shuffle": false } ``` ### 播放帧率fps 属性 | 说明 ---- | ---------------- 描述 | 用于控制序列帧特效每秒的播放数量 默认值 | `30` 参数范围 | [1 - 100] 提示 | 受限于屏幕/游戏刷新率,建议序列帧的播放帧率不要超过30 ```json { "fps": 30 } ``` ### 延迟开始播放 属性 | 说明 ---- | ---------------- 描述 | 用于控制序列帧特效是否延迟指定时间(秒)播放 默认值 | `0.0` 参数范围|[0-999999] ```json { "delay": 10.0 } ``` ### 始终面向摄像机face_camera 属性 | 说明 ---- | ------------------ 描述 | 用于控制序列帧特效是否始终正向于屏幕 默认值 | `false` 参数范围 | `true`, `false` ```json { "face_camera": false } ``` ### 深度检测depth_test 属性 | 说明 ---- | ----------------- 描述 | 用于控制序列帧特效是否开启深度检测 默认值 | `false` 参数范围 | `true`, `false` 说明 | 如果关闭深度检测,序列帧一直会遮盖所在的屏幕平面渲染的东西,如果开启,则会依据深度进行相关渲染 - 关闭深度检测 ![](./images/spark_FrameDepthCheckEffect.gif) - 打开深度检测 ![](./images/spark_FrameDepthCheckEnableEffect.gif) ```json { "depth_test": false } ``` ### 混合模式blend_mode 属性 | 说明 ---- | -------------- 描述 | 用于控制不同序列帧特效混合效果 默认值 | `1` 参数范围 | `1`, `2` - 1, 透明度混合, 能保证两个颜色显示正常 - 2, 颜色值累加,仅单纯累加对应颜色值 ```json { "blend_mode": 1 } ``` ### 淡出距离 属性 | 说明 ---- | -------------------------- 描述 | 序列帧与摄像机之间的距离小于该值时会自动调整序列帧的透明度 默认值 | `0.0` 提示 |距离摄像机越近,序列帧越透明 ```json { "fade_distance": 10.0, } ``` ### 层级layer 属性 | 说明 ---- | -------------------------- 描述 | 支持序列帧前后层级效果,当数值越大,渲染越晚,显示越靠前 默认值 | `1` 参数范围 | 0 ~ 15 ```json { "layer": 1 } ``` ## 序列帧特效贴图属性说明 ### 贴图texture 属性 | 说明 ---- | ----------------------------------------------- 描述 | 序列帧的贴图路径 默认值 | `` 提示 | 贴图仅支持 .png 格式,在使用时需要忽略后缀名 提示 | 序列帧 .png 贴图在同一目录下需要同名的 .json 配置文件,否则仅作为一个单帧图片显示,具体参考[序列帧配置](./21-序列帧配置文件解析.md) ```json { "texture": "textures/sfxs/my123" } ``` ### 贴图总缩放系数scale 属性 | 说明 --- | -------------------------------- 描述 | 序列帧贴图的总缩放参数,分别表示 x, y, z 方向的缩放系数 默认值 | `1.0 1.0 1.0` 提示 | 总缩放系数与序列帧的每帧系数叠加 ```json { "scale": [1.0, 1.0, 1.0] } ``` ### 贴图重复次数tex_repeat_num 属性 | 说明 ---- | ---------- 描述 | 序列帧分别在 x, y 上的重复参数 默认值 | `[1, 1]` ```json { "tex_repeat_num": [1, 1] } ``` - 使用 [1, 1] 效果 ![](./images/spark_TexRepeatNum1_1.gif) - 使用 [5, 2] 效果 ![](./images/spark_TexRepeatNum5_2.gif) ### 旋转速度rot_speed 属性 | 说明 --- | ----------------------- 描述 | 序列帧贴图的沿 x, y, z 方向的旋转速度 默认值 | `[0.0, 0.0, 0.0]` ```json { "rot_speed": [-1.0, 0.0, 1.0] } ``` ## 序列帧特效动态属性说明 ### 每帧缩放scale 属性 | 说明 -- | ---------------------------------- 描述 | 用于设置序列帧每帧图片的缩放系数 提示 | 该属性位在序列帧贴图配置文件的对应帧数里 提示 | 如果修改该值,所有使用该序列帧贴图的特效都会受到影响 ```json { "scale": { "x": 3.04, "y": 3.04, "z": 3.04 } } ``` ![](./images/spark_FramePerFramePanel.png) ![](./images/spark_FramePerFrameEffect.gif) ### 动态颜色frame_color 属性 | 说明 ---- | -------------------- 描述 | 用来控制序列帧特效在不同时期的颜色变化 默认值 | `不开启` 提示 | 颜色值在不同的点之间是按照线性变化,支持透明度设置 ```json { "frame_color": [ [ 1.0, 0.9411764705882353, 0.09411764705882353, 1.0 ], [ 0.06666666666666667, 1.0, 0.0196078431372549, 0.7 ], [ 1.0, 0.23921568627450981, 0.09019607843137255, 1.0 ] ] } ``` ![Direction](./images/spark_DynamicColorEffectPanel.png) ![Direction](./images/FrameDynamicColorEffect.gif) ## 序列帧特效环状序列帧属性说明 ### 是否环状序列帧cylinder_enable 属性 | 说明 ---- | -------------------- 描述 | 用于控制序列帧特效是否开启环状序列帧属性 默认值 | `false` 参数范围 | `true`, `false` - 关闭环状序列帧 ![](./images/spark_FrameEffectNormal.gif) - 打开环状序列帧 ![](./images/spark_FrameEffectRing.gif) ```json { "cylinder_enable": false } ``` ### 顶部半径cylinder_radius_up 属性 | 说明 ---- | ------------------------ 描述 | 当开启环状序列帧属性后,用于控制序列帧的顶部半径 默认值 | `0.0` 参数范围 | 0.0 - 100000.0 ```json { "cylinder_radius_up": 1.0 } ``` ### 底部半径cylinder_radius_down 属性 | 说明 ---- | ------------------------ 描述 | 当开启环状序列帧属性后,用于控制序列帧的底部半径 默认值 | `0.0` 参数范围 | 0.0 - 100000.0 ```json { "cylinder_radius_down": 1.0 } ``` ### 近似多边形数cylinder_frac_num 属性 | 说明 ---- | -------------------------- 描述 | 当开启环状序列帧属性后,用于控制序列帧近似多边形数量 默认值 | `8` 参数范围 | 1 - 100000 提示 | 参数越大则效果越好,当低于 3 时,该参数基本无效果 ```json { "cylinder_frac_num": 10 } ``` ### 高度cylinder_height 属性 | 说明 ---- | ---------------------- 描述 | 当开启环状序列帧属性后,用于控制序列帧的高度 默认值 | `0.0` 参数范围 | 0.0 - 100000.0 ```json { "cylinder_height": 1.0 } ```