# 粒子系统
粒子属性与生命周期过程中的变化效果由系统ParticleSystem管理,其一版本代理到元素XRParticleSystem,对应在xml
中的标签是xr-particle
。
# 在wxml中创建
首先声明资源节点,导入纹理, 用于描绘粒子的基本形态
<xr-asset-load type="texture" asset-id="particle-texture" src="path/to/texture.xxx" />
接下来在xml
中通过xr-particle
标签声明粒子节点,同时设置粒子系统的基本属性,例如
<xr-particle material="particle-mat" capacity="20" emit-rate="5" life-time="3" emitter-type="BoxShape" textre="particle-texture"></xr-particle>
# 粒子系统基本属性
影响粒子系统生命周期、初始色彩、初始体积等效果的相关属性介绍如下
名称 | 类型 | 备注 | 默认值 | 用例 |
---|---|---|---|---|
angle | number[] | 粒子的起始角度,"最小值 最大值(可选)" | [0, 0] | angle="0 0" |
angular-speed | number[] | 每秒钟粒子旋转的角度(单位:角度) | [0, 0] | angular-speed="0 0" |
atlas | Atlas | 描绘粒子形态的纹理图集 | atlas="particle-atlas" | |
atlas-frames | string[] | 指定纹理图集中的特定帧,以帧名的形式 | atlas-frames="snow star" | |
atlas-loop | boolean | 决定纹理图集播放到最后一帧时是否循环 | true | atlas-loop="false" |
atlas-random | boolean | 粒子的初始形态是否从纹理集中随机选择 | false | atlas-random="true" |
atlas-speed | number | 粒子纹理的变化速度 | 1 | atlas-speed="2" |
burst-count | number | 粒子一次性喷射的粒子数量, 大于-1生效 | -1 | burst-count="5" |
capacity | number | 容许同时存在的最多粒子数量 | 1 | capacity="5" |
delay | number | 延时启动粒子的秒数 | 0 | delay="3" |
emit-rate | number | 每秒钟允许生成的最多粒子数量 | 10 | emit-rate="5" |
emitter-type | string | 粒子发射器的类型 | "PointShape" | emitter-type="SphereShape" |
emitter-props | map | 粒子发射器的属性, 搭配发射器类型使用 | "" | emitter-props="radius:1.5" |
emitter-position | number[] | 粒子发射器的位置 | (0, 0, 0) | emitter-position="2 0 0" |
end-color | number[] | 粒子生命周期结束时的颜色 | [1, 1, 0, 1] | end-color="1 1 0 1" |
gravity | number | 粒子在y轴上每秒的运动距离 | 0 | gravity="9.8" |
life-time | number[] | 粒子的生命周期时长区间,"最小值 最大值(可选)" | [1, 1] | lifeTime="1 3" |
render-mode | string | 粒子的渲染模式, 详见billboard模式介绍 | “default" | render-mode="stretched" |
size | number[] | 粒子的大小,"最小值 最大值(可选)" | [0.3, 0.3] | size="1" |
speed | number[] | 粒子的速度大小,"最小值 最大值(可选)" | [1, 1] | speed="1 1" |
start-color | number[] | 粒子初始颜色左区间 | [1, 0, 0, 1] | start-color="1 0 0 1" |
start-color2 | number[] | 粒子初始颜色右区间 | start-color2="1 1 0 1" | |
stop-duration | number | 粒子存在的总时长(单位:秒), 0表示永远存在 | 0 | stop-duration="3" |
texture | string | 描绘粒子形态的基本纹理 | texture="particle-texture" | |
mesh | string | 以特定网格形态渲染粒子 | mesh="cube" | |
use-noise | boolean | 是否对粒子运动轨迹启用噪声 | false | use-noise="true" |
noise-texture | string | 采样的噪声纹理名(可选), 内置柏林噪声 | noise-texture="noiseTexture" | |
noise-strength | number[] | 不同轴向上施加噪声干涉运动的力度(可选) | [1, 1, 1] | noise-strength="2 1 1" |
注意:这里的属性类型指粒子系统内部对应的数据结构,在xml格式中按照用例的字符串形式输入即可,对应字符串转换规律如data-values中所示。