粒子发射器(ParticleEmitter)
ParticleEmitter 是一个单独的组件,用于控制粒子的发射。
常用粒子发射器形状
圆形发射器 CircleEmitter
发射器形状类型名称: circle
| 属性 | 类型 | 描述 |
|---|---|---|
| radius | number | 半径 |
| arc | radian | 有效发射角度(弧度表示) |
| thickness | number | 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。当这个值为0到1之间的时候会在原球形里面再产生一个小球体,粒子从原球体和小球体之间发射。 |
| mode | emitterMode | 如何在形状的弧形周围生成粒子 |
| spread | number | 形状周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| speed | valueFunc | 发射位置沿弧线推进的速度,仅在 mode 为 Loop/PingPong 时起作用(不是粒子速度,粒子初速请用粒子系统的 startSpeed) |
锥形发射器 ConeEmitter
发射器形状类型名称: cone
| 属性 | 类型 | 描述 |
|---|---|---|
| radius | number | 半径 |
| arc | radian | 有效发射角度(弧度表示)设置圆锥发射器发射粒子的扇形区域 |
| thickness | number | 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。当这个值为0到1之间的时候会在原球形里面再产生一个小球体,粒子从原球体和小球体之间发射。 |
| angle | radian | 角度(弧度表示)圆锥的轴与母线的夹角,值越大夹角越大,圆锥发射器的开合程度越大 |
| mode | emitterMode | 如何在形状的弧形周围生成粒子 |
| spread | number | 形状周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| speed | valueFunc | 发射位置沿弧线推进的速度,仅在 mode 为 Loop/PingPong 时起作用(不是粒子速度,粒子初速请用粒子系统的 startSpeed) |
甜甜圈发射器 DonutEmitter
发射器形状类型名称: donut
| 属性 | 类型 | 描述 |
|---|---|---|
| radius | number | 半径 |
| arc | radian | 有效发射角度(弧度表示) |
| thickness | number | 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。当这个值为0到1之间的时候会在原球形里面再产生一个小球体,粒子从原球体和小球体之间发射。 |
| donutRadius | number | 甜甜圈半径 |
| mode | emitterMode | 如何在形状的弧形周围生成粒子 |
| spread | number | 形状周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| speed | valueFunc | 发射位置沿弧线推进的速度,仅在 mode 为 Loop/PingPong 时起作用(不是粒子速度,粒子初速请用粒子系统的 startSpeed) |
点发射器 PointEmitter
发射器形状类型名称: point
球形发射器 SphereEmitter
发射器形状类型名称: sphere
| 属性 | 类型 | 描述 |
|---|---|---|
| radius | number | 半径 |
| arc | radian | 有效发射角度(弧度表示) |
| thickness | number | 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。当这个值为0到1之间的时候会在原球形里面再产生一个小球体,粒子从原球体和小球体之间发射。 |
| mode | emitterMode | 如何在形状的弧形周围生成粒子 |
| spread | number | 形状周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| speed | valueFunc | 发射位置沿弧线推进的速度,仅在 mode 为 Loop/PingPong 时起作用(不是粒子速度,粒子初速请用粒子系统的 startSpeed) |
半球发射器 HemisphereEmitter
发射器形状类型名称: hemisphere(JSON/注册表用此名;注意实例字段 emitter.type 在 2.0.0 源码里误写为 'sphere',判断半球发射器请用 instanceof vjmap3d.HemisphereEmitter 或 toJSON().type)
| 属性 | 类型 | 描述 |
|---|---|---|
| radius | number | 半径 |
| arc | radian | 有效发射角度(弧度表示) |
| thickness | number | 发射粒子的体积比例。值为 0 表示从形状的外表面发射粒子。值为 1 表示从整个体积发射粒子。介于两者之间的值将使用体积的一定比例。当这个值为0到1之间的时候会在原球形里面再产生一个小球体,粒子从原球体和小球体之间发射。 |
| mode | emitterMode | 如何在形状的弧形周围生成粒子 |
| spread | number | 形状周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| speed | valueFunc | 发射位置沿弧线推进的速度,仅在 mode 为 Loop/PingPong 时起作用(不是粒子速度,粒子初速请用粒子系统的 startSpeed) |
网格发射器 GridEmitter
发射器形状类型名称: grid
| 属性 | 类型 | 描述 |
|---|---|---|
| width | number | 网格宽 |
| height | number | 网格高 |
| row | number | 网格行 |
| column | number | 网格列 |
Mesh表面发射器 MeshSurfaceEmitter
发射器形状类型名称: mesh_surface
| 属性 | 类型 | 描述 |
|---|---|---|
| geometry | geometry | 几何体 |
立方体发射器 CubeEmitter
发射器形状类型名称: cube
| 属性 | 类型 | 描述 |
|---|---|---|
| width | number | X 方向半宽(粒子在 [-width, width] 内生成),默认 10 |
| height | number | Y 方向半高,默认 10 |
| thickness | number | Z 方向半厚,默认 10 |
| mode | emitterMode | 生成方式(只作用于 X 坐标,Y/Z 始终随机) |
| spread | number | 形状周围可产生粒子的离散间隔。例如,值为 0 表示允许在弧形周围的任何位置生成粒子,值为 0.1 表示仅在形状周围以 10% 的间隔生成粒子。 |
| speed | valueFunc | Loop/PingPong 模式下发射位置推进的速度(不是粒子速度) |
⚠️ 粒子初速度方向取自归一化前的
[0,1)³随机坐标,只朝 +X/+Y/+Z 一个卦限发散,不是从中心向四周;需要四周发散请改用SphereEmitter等形状或用ChangeEmitDirection/SetEmitDirection调整方向。
路径发射器 PathEmitter
发射器形状类型名称: path
| 属性 | 类型 | 描述 |
|---|---|---|
| paths | [number, number, number][] | 路径坐标 |
| mode | emitterMode | 仅序列化,运行时不起作用(总是在随机一段上随机取点) |
| spread | number | 仅序列化,运行时不起作用 |
| speed | valueFunc | 仅序列化,运行时不起作用 |
⚠️ 运行时缺陷:内部用
MathUtils.randInt(0, paths.length)(含上界)选段,约有1/(n+1)的概率取到越界下标,new Vector3(...undefined)直接抛错,渲染循环随之报错;粒子初速度也固定朝 +Z。生产环境不建议使用PathEmitter。