粒子发射器¶
粒子发射器(Particle Emitter)是Minecraft基岩版粒子系统中负责生成粒子的运行时对象。发射器保存自身的生命周期、发射速率、发射形状、实体挂接关系和部分Molang变量,并在满足条件时创建一个或多个粒子。
概述¶
粒子发射器不是可见粒子本身。一个粒子特效通常先创建发射器,再由发射器按照组件规则持续或瞬时生成粒子。发射器可在短时间内只生成一个粒子,也可在长时间内反复生成大量粒子。每个被生成的粒子拥有独立状态,发射器则负责其生成时机和初始条件。
发射器存在的意义在于把“效果源”与“单个粒子”分离。火把火焰、燃烧生物、药水气泡、雨点落地飞溅和法术光环等效果都需要一个稳定或临时的源来控制粒子生成,而每个粒子又需要独立地运动、变色和消失。
生命周期¶
发射器的生命周期决定其何时处于激活状态、何时暂停、何时过期。基岩版粒子系统提供三类常见生命周期模型:
- 循环生命周期(Looping Lifetime):发射器在激活时段和休眠时段之间反复切换,适合周期性环境效果。
- 单次生命周期(Once Lifetime):发射器只执行一次,适合爆炸、破坏、命中、瞬时闪光等效果。
- 表达式生命周期(Expression Lifetime):发射器由Molang表达式控制启用与过期,适合随实体状态、动画状态或变量变化的效果。
发射器也可以在创建、过期、时间线到达特定时间或移动距离达到条件时触发粒子事件。
发射率¶
发射率决定发射器如何生成粒子。稳态发射以固定或Molang计算出的速率持续生成粒子,并限制最大存活粒子数。瞬时发射在发射器激活时一次性生成指定数量的粒子。手动发射则不按时间自动生成粒子,而是等待事件或游戏逻辑显式要求。
发射率与生命周期共同决定粒子数量。相同的发射率在循环发射器、单次发射器和由表达式控制的发射器中会产生不同效果。
发射形状¶
发射形状决定粒子的生成位置和默认方向。常见形状包括点、球体、盒体、圆盘、自定义Molang形状和实体轴对齐包围盒。形状可只从表面生成粒子,也可从内部体积生成粒子。形状方向可指向外侧、指向内侧或由三维表达式向量指定。
实体轴对齐包围盒形状只在发射器挂接到实体时具有完整意义。它允许粒子围绕实体体积生成,常用于燃烧、冻结、治疗、受伤反馈和环绕实体的光效。
空间与实体挂接¶
发射器可以独立存在于世界位置,也可以挂接到实体或实体几何体中的定位器。挂接发射器会跟随实体或定位器移动和旋转;当实体不存在时,与之绑定的粒子效果也随之结束。
本地空间模拟¶
本地空间设置(minecraft:emitter_local_space)决定粒子模拟是否继续跟随实体空间变换。可配置的项包括:
- 位置(
position):为true时粒子位置在实体本地空间中模拟。粒子会跟随实体的运动,相对位置保持不变。 - 旋转(
rotation):为true时粒子旋转在实体本地空间中模拟。粒子会跟随实体的旋转。 - 速度(
velocity):为true时粒子继承实体的速度,加到粒子初始速度中。
无效的空间组合可能导致效果无法按预期工作。例如,rotation=true但position=false是无效的组合。
与粒子的关系¶
发射器组件主要影响粒子创建前和创建时的行为;粒子组件主要影响粒子创建后的行为。例如,发射器形状决定粒子从哪里出现,粒子初始速度决定粒子出现后以多快速度离开发射点,粒子动态运动组件再决定其后续加速度、阻力和旋转变化。
这种分工使粒子特效可以通过少量组件组合出多种行为。发射器描述“源”,粒子描述“源产生的单个可见元素”。