MC Toolkit

指南 / 命令与数据

/particle:delta 与 speed 到底是什么意思,以及 count=0 的妙用

坐标后面的四个数字并不是方向。本文讲解 delta 与 speed 的真正作用、为什么 count=0 的行为完全不同,以及如何让粒子朝指定方向飞,count 设为 0 时每条命令只发射一个粒子,所以做出一条光束需要循环或命令链才行。

/particle flame ~ ~1 ~ 0.5 0.5 0.5 0.01 20
                      └─ delta ─┘  spd  count

这四个数字是整条命令里最容易被误读的部分。

delta 是散布范围,不是方向

dx dy dz 描述的是以坐标为中心的高斯散布——粒子在各轴上的散开程度。0.5 0.5 0.5 得到一个模糊的球体,2 0 0 得到一条沿 X 轴的线。

它们不是速度向量。正负号没有任何区别,-2 0 0 和 2 0 0 产生的是同一条线。

除非 count 为 0

把 count 设为 0,前面每一个数字的含义都会改变:

countdelta 的含义speed 的含义
≥ 1随机散布范围随机速度大小
0方向向量沿该方向的速度
/particle flame ~ ~1 ~ 0 1 0 0.5 0    →  one particle shot straight up at 0.5

这是唯一能让粒子朝指定方向飞的方法。所有「怎么做光束」的答案最终都会落到这里。代价是每条命令只能产生一个粒子,所以光束要靠循环或命令链来实现。

speed 并不总是速度

对大多数粒子来说,speed 是速度倍率。但对少数几种粒子,它的用途被完全改写了:

  • dust —— 大小由参数决定,speed 不起任何作用
  • note —— x 方向的速度决定颜色:当 count 0 时,颜色取 x 方向的 delta 乘以 speed,0 到 1 正好绕色相环一圈(音符盒则传入音高 ÷ 24)。count 更高时颜色随机
  • entity_effect —— 颜色取自 alpha-RGB 参数

所以 /particle note ~ ~1 ~ 0.5 0 0 1 0 并不是一个飞得很快的粒子——0.5 和 speed 1 合在一起只是让它变成了另一种颜色。

带专属参数的粒子

/particle dust{color:[1.0,0.0,0.0],scale:1} ~ ~ ~ 0 0 0 0 1
/particle block{block_state:"minecraft:stone"} ~ ~ ~ 0.3 0.3 0.3 0 10
/particle dust_color_transition{from_color:[1,0,0],to_color:[0,0,1],scale:1} ~ ~ ~ 0 0 0 0 1

参数块要紧跟在粒子名称之后,放在坐标之前。把它放到末尾是最常见的语法错误。

force 与观察者

命令末尾可以加上可选的模式和玩家:

/particle flame ~ ~ ~ 0 0 0 0 1 force @a

normal 会遵循每个客户端的粒子设置,并受 32 格可见距离限制。force 则无视设置显示粒子,可见距离可达 512 格。凡是玩家必须看到的东西——Boss 预警、任务标记——都必须用 force,这也解释了为什么你自己能看到粒子,而把粒子调少的玩家却看不到。

性能

粒子属于客户端渲染,所以开销落在玩家身上,而不是服务器上。每 tick 对每个玩家执行 count 200 次,即使服务器 TPS 毫无波动,也会让配置一般的机器掉帧。与其一次性发出巨大的 count,不如把发射分散到多个 tick 上。

在粒子与音效图鉴中浏览所有粒子类型和 1,900 多个音效 ID,附带现成的命令。

粒子与音效图鉴 →

更多指南

查看全部 →