Appearance
粒子效果
属性
particleRate
默认值:0
实体平均每秒产生粒子的数量。如果希望实体停止释放粒子,可以将该属性改为 0
点击查看示例代码
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
点击查看示例代码
javascript
// 玩家身上每秒产生5~14个粒子
world.onPlayerJoin(({ entity }) => {
Object.assign(entity, {
particleRate: 5,
particleRateSpread: 10,
});
});
particleLimit
默认值:100
实体可产生的粒子总数的上限
particleLifetime
默认值:10
粒子的存活时间,以秒为单位
点击查看示例代码
javascript
// 粒子存活1秒
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 30;
entity.particleLifetime = 1;
entity.particleVelocity = new GameVector3(0, 0.5, 0);
});
particleLifetimeSpread
默认值:0
如果设定了该属性的值,粒子的存活时间将不再是固定值,而是区间 [particleLifetime, particleLifetime + particleLifetimeSpread) 里的一个随机数,可能为小数
点击查看示例代码
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,之后又逐渐缩小至最小值
点击查看示例代码
javascript
// 粒子放大缩小最后膨胀消失
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 30;
entity.particleSize = [2, 4, 8, 4, 10];
entity.particleLifetime = 1;
entity.particleVelocity = new GameVector3(0, 0.5, 0);
});
particleSizeSpread
默认值:0
- 如果设定了该属性,但没设定 particleSize 的值,每产生一个粒子,会从区间[0, particleSizeSpread)里选取的一个随机数作为它的大小
- 如果同时设定了 particleSize 和 particleSizeSpread 两个属性,每产生一个粒子,从区间[0, particleSizeSpread)里选取一个随机数 x,这个粒子第 i 个阶段的大小将为 particleSize[i]+x
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 的数组,数组里的每个值分别指定了粒子在各个阶段的颜色。类似地,可以通过该属性使粒子具有颜色渐变的效果
点击查看示例代码
javascript
// 玩家身上着火了
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 30;
entity.particleSize = [2, 4, 8, 4, 10];
entity.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),
];
entity.particleLifetime = 1;
entity.particleVelocitySpread = new GameVector3(2, 2, 2);
});
particleVelocity
默认值:GameVector3(0, 0, 0)
该实体产生的所有粒子的初始速度,如果将该属性设为 new GameVector3(x, y, z),x,y,z 三个值分别指定粒子在对应三个方向上的速率
点击查看示例代码
javascript
// 从玩家的位置向一个点发射粒子
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 30;
entity.particleSize = [2, 2, 2, 2, 10];
entity.particleLifetime = 2;
entity.particleVelocity = new GameVector3(0, 0, 50);
});
particleVelocitySpread
默认值:GameVector3(0, 0, 0)
增加该实体产生的所有粒子初始速度的不确定性,如果将该属性设为 new GameVector3(sx, sy, sz),每产生一个粒子,会基于这三个值分别产生一个随机值加到 x/y/z 三个方向所对应的速率上。通过设定这个属性,可以使粒子具有向随机方向运动的效果
点击查看示例代码
javascript
// 从玩家的位置扇形发射粒子
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 100;
entity.particleSize = [2, 2, 2, 2, 10];
entity.particleLifetime = 2;
entity.particleVelocity = new GameVector3(0, 0, 50);
entity.particleVelocitySpread = new GameVector3(30, 2, 2);
});
particleDamping
默认值:0
- 如果该属性的值为正数,会短暂减少该实体所产生粒子的初始速度,数值越大,减少初始速度的效果持续得越久
- 如果为负值,会短暂增加粒子的初始速度,数值越小,增加初始速度的效果越明显
点击查看示例代码
javascript
// 蓄力发射
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 100;
entity.particleSize = [2, 2, 2, 2, 10];
entity.particleLifetime = 2;
entity.particleVelocity = new GameVector3(0, 0, 50);
entity.particleVelocitySpread = new GameVector3(30, 2, 2);
entity.particleDamping = 3;
});
particleAcceleration
默认值:GameVector3(0, 0, 0)
该实体所产生粒子的加速度
particleNoise
默认值:0
指定粒子相对于之前运动方向的最大偏离值,数值越大,各个粒子的运动相对原有方向的偏离越明显
particleNoiseFrequency
默认值:1
指定粒子改变运动方向的频率,数值越大,各个粒子的运动方向越没有规律
点击查看示例代码
javascript
// 风飘雪
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 30;
entity.particleSize = [2, 2, 2, 2, 10];
entity.particleLifetime = 2;
entity.particleVelocity = new GameVector3(0, 0, 50);
entity.particleNoise = 20;
entity.particleNoiseFrequency = 10;
});
particleTarget
默认值:null
指定粒子的追踪目标实体。将该属性设为某个实体后,粒子会在运动过程中向该目标靠拢(具体效果取决于 particleTargetWeight
)。将其设为 null
表示关闭目标追踪。
点击查看示例代码
javascript
// 将粒子朝向某个实体
world.onPlayerJoin(({ entity }) => {
entity.particleRate = 50;
entity.particleLifetime = 2;
entity.particleVelocity = new GameVector3(0, 0, 20);
entity.particleTarget = targetEntity; // 设为 null 则不追踪
entity.particleTargetWeight = 5; // 吸引强度,数值越大越明显
});
particleTargetWeight
默认值:0
控制粒子朝向 particleTarget
的吸引强度。数值越大,粒子越倾向于向目标运动;当为 0 时,无吸引效果。