Skip to content

粒子效果

属性

particleRate

默认值:0

实体平均每秒产生粒子的数量。如果希望实体停止释放粒子,可以将该属性改为0

定义于 #L10847

点击查看示例代码
javascript
// 玩家身上每秒产生5个粒子
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 5,
  });
});

particleRateSpread

默认值:0

如果设定了该属性的值,实体每一秒产生粒子的数量将不再是个固定值,而是从区间 [particleRate, particleRate + particleRateSpread) 里随机选取的一个整数。

例如,假设 particleRate=0,particleRateSpread=3,每秒产生的粒子数量是[0, 0+3) ,即[0, 3)区间里的一个随机整数,也就是可能为0,1,或2

定义于 #L10852

点击查看示例代码
javascript
// 玩家身上每秒产生5~14个粒子
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 5,
    particleRateSpread: 10,
  });
});

particleLimit

默认值:100

实体可产生的粒子总数的上限

定义于 #L10857


particleLifetime

默认值:10

粒子的存活时间,以秒为单位

定义于 #L10878

点击查看示例代码
javascript
// 粒子存活1秒
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 30,
    particleLifetime: 1,
    particleVelocity: new GameVector3(0, 0.5, 0),
  });
});

particleLifetimeSpread

默认值:0

如果设定了该属性的值,粒子的存活时间将不再是固定值,而是区间 [particleLifetime, particleLifetime + particleLifetimeSpread) 里的一个随机数,可能为小数

定义于 #L10883

点击查看示例代码
javascript
// 粒子存活1~6秒
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 30,
    particleLifetime: 1,
    particleLifetimeSpread: 5,
    particleVelocity: new GameVector3(0, 0.5, 0),
  });
});

particleSize

默认值:[1, 1, 1, 1, 1]

该属性的值可以是一个长度为0至5的数组。每个粒子的存活时间被平均分为五个阶段,对于长度为5的数组,数组里的每个值分别指定粒子在各个阶段的大小,其中,第一个值为粒子刚产生是的大小,第五个值为粒子消失时的大小。举几个例子,假设粒子的存活时间被设定为5秒,如果 particleSize 的值为

  • [25, 25, 25, 25, 25],在粒子存活的5秒内大小不会发生变化,产生时是25,消失时也是25
  • [0, 25, 0, 25, 15],粒子产生时大小为0,然后逐渐变为25,之后又逐渐变为0,再逐渐变为25,最后变为15,可以让该实体所产生的粒子具有逐渐放大缩小的效果
  • [15, 25], 粒子产生时大小为15,1秒后逐渐变大至25,之后又逐渐缩小至最小值

定义于 #L10868

点击查看示例代码
javascript
// 粒子放大缩小最后膨胀消失
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 30,
    particleSize: [2, 4, 8, 4, 10],
    particleLifetime: 1,
    particleVelocity: new GameVector3(0, 0.5, 0),
  });
});

particleSizeSpread

默认值:0

  • 如果设定了该属性,但没设定 particleSize 的值,每产生一个粒子,会从区间[0, particleSizeSpread)里选取的一个随机数作为它的大小
  • 如果同时设定了 particleSize 和 particleSizeSpread 两个属性,每产生一个粒子,从区间[0, particleSizeSpread)里选取一个随机数x,这个粒子第i个阶段的大小将为 particleSize[i]+x

定义于 #L10873


particleColor

默认值:[ new GameRGBColor(1,1,1), new GameRGBColor(1,1,1), new GameRGBColor(1,1,1), new GameRGBColor(1,1,1), new GameRGBColor(1,1,1) ]

类似 particleSize,该属性的值可以是一个长度为0至5的数组,数组里的每个值分别指定了粒子在各个阶段的颜色。类似地,可以通过该属性使粒子具有颜色渐变的效果

定义于 #L10863

点击查看示例代码
javascript
// 玩家身上着火了
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 30,
    particleSize: [2, 4, 8, 4, 10],
    particleColor: [
      new GameRGBColor(10, 9, 2),
      new GameRGBColor(5, 0.25, 0.1),
      new GameRGBColor(3, 0.05, 0.05),
      new GameRGBColor(0, 0, 0),
      new GameRGBColor(0, 0, 0),
    ],
    particleLifetime: 1,
    particleVelocitySpread: new GameVector3(2, 2, 2),
  });
});

particleVelocity

默认值:GameVector3(0, 0, 0)

该实体产生的所有粒子的初始速度,如果将该属性设为new GameVector3(x, y, z),x,y,z三个值分别指定粒子在对应三个方向上的速率

定义于 #L10888

点击查看示例代码
javascript
// 从玩家的位置向一个点发射粒子
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 30,
    particleSize: [2, 2, 2, 2, 10],
    particleLifetime: 2,
    particleVelocity: new GameVector3(0, 0, 50),
  });
});

particleVelocitySpread

默认值:GameVector3(0, 0, 0)

增加该实体产生的所有粒子初始速度的不确定性,如果将该属性设为new GameVector3(sx, sy, sz),每产生一个粒子,会基于这三个值分别产生一个随机值加到 x/y/z 三个方向所对应的速率上。通过设定这个属性,可以使粒子具有向随机方向运动的效果

定义于 #L10893

点击查看示例代码
javascript
// 从玩家的位置扇形发射粒子
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 100,
    particleSize: [2, 2, 2, 2, 10],
    particleLifetime: 2,
    particleVelocity: new GameVector3(0, 0, 50),
    particleVelocitySpread: new GameVector3(30, 2, 2),
  });
});

particleDamping

默认值:0

  • 如果该属性的值为正数,会短暂减少该实体所产生粒子的初始速度,数值越大,减少初始速度的效果持续得越久
  • 如果为负值,会短暂增加粒子的初始速度,数值越小,增加初始速度的效果越明显

定义于 #L10901

点击查看示例代码
javascript
// 蓄力发射
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 100,
    particleSize: [2, 2, 2, 2, 10],
    particleLifetime: 2,
    particleVelocity: new GameVector3(0, 0, 50),
    particleVelocitySpread: new GameVector3(30, 2, 2),
    particleDamping: 3,
  });
});

particleAcceleration

默认值:GameVector3(0, 0, 0)

该实体所产生粒子的加速度

定义于 #L10907


particleNoise

默认值:0

指定粒子相对于之前运动方向的最大偏离值,数值越大,各个粒子的运动相对原有方向的偏离越明显

定义于 #L10912


particleNoiseFrequency

默认值:1

指定粒子改变运动方向的频率,数值越大,各个粒子的运动方向越没有规律

定义于 #L10917

点击查看示例代码
javascript
// 风飘雪
world.onPlayerJoin(({ entity }) => {
  Object.assign(entity, {
    particleRate: 30,
    particleSize: [2, 2, 2, 2, 10],
    particleLifetime: 2,
    particleVelocity: new GameVector3(0, 0, 50),
    particleNoise: 20,
    particleNoiseFrequency: 10,
  });
});