像素画爆炸精灵表
爆炸是最难手工制作动画的效果之一:一道闪光、一个先膨胀后冷却的火球、滚滚散开的烟。Pixor 用 3D 粒子绘制它们,经过与你的精灵相同的外观,所以它们能和你的精灵属于同一个游戏。

怎样的爆炸才好看
在游戏速度下依然好看的像素画爆炸,按顺序有这几个部分:
- 一道闪光。一两帧调色板中最亮的颜色,小而明亮。它告诉玩家命中发生在哪里。
- 一个火球,迅速膨胀,冷却时由黄经橙变红。
- 烟滚滚散开并变暗,最后的火光从中透出。
- 火花或碎片在开始时飞出,每个一两个像素。
手工绘制的话,这是十几帧形状,必须在不跳变的情况下变大、重叠、变色。大多数手绘爆炸靠减少帧数和用平坦的形状取巧,而大多数用粒子工具做出再缩小的爆炸,成了有几百种颜色的软糊团,这恰恰是像素画游戏不想要的。
在 Pixor 里做一个
完全不需要模型,一行命令就能生成精灵表:
pxr effect explosion:12 --preset selout --size 64 --export gif,json -o explosion.png

这会写出 explosion.png(十二帧 64×64 的精灵表)、记录每帧位置和时间的 JSON,以及用来检查的 GIF。在应用中,空项目的界面上,创建效果就在导入…和浏览免费模型旁边。
爆炸由 3D 粒子构成,经过与模型相同的流程渲染:光照色带、每种颜色一条色相偏移的色阶、调色板、线条。所以它会采用你给它的外观:--preset selout 绘制selout 外观的彩色轮廓,--palette my-game.hex 把它放到你的调色板上,而项目自己的风格则让它与你的精灵完全一致。
修改它
爆炸具有任何 Pixor 效果都有的设置:
- 帧数:冒号后面的数字,
explosion:8是快速的一闪,explosion:16是较慢的一次。 - 尺寸:
--size是帧的像素大小。上面的爆炸是 64;32 或 48 适合大多数敌人。 - 能量(
--effect-energy)决定它的强度,效果本身在场景中的大小(--effect-size)以及它所在的位置(--effect-at X,Y,Z)。 - 种子(
--effect-seed):同一个种子总是给出同样的像素。渲染种子 1、2 和 3,就得到三个互不相同的爆炸。
用在敌人身上
爆炸通常发生在某个东西身上。把它作为一个独立的动作加到模型上:
pxr render spaceship.glb --view top-down --size 64 --clip none \
--effect explosion:12 --effect-hit 2 --export json -o ship.png
在应用中,在场景步骤里,用大纲中效果下的 + 添加。它会成为场景图中的一个效果节点,以及一个名为 fx-explosion 的动作,在精灵表上有自己的一行。它的菱形可以在 3D 视图中拖动来摆放。
三个设置让它贴合当下的时刻:
- 跟随某根骨骼:枪口的火光在枪的末端,手里发出的爆破。
- 在片段上播放(
--effect-clip):爆炸在模型做某件事时播放,比如飞船解体。 - 仅效果(
--effect-alone):不带模型单独绘制爆炸,作为独立的图层,与角色的精灵表对齐。游戏把它叠在当前的任何精灵之上播放。
命中帧(--effect-hit 2)标出打中的那一帧。JSON 把它列在 meta.pixor.hits 下,所以游戏可以在恰好这一帧晃动摄像机、造成伤害或播放音效。
来自模拟的烟
Pixor 自己的爆炸很快,不需要别的东西。要更厚重的爆炸,可以加一团由爆炸发射器带出的烟体积:--effect explosion --volume puff:1.5@effect:1。Blender、EmberGen 或 Houdini 的 .vdb 模拟也可以用在同样的位置,并按同样的色带绘制;参见用 VDB 做火、烟和水。
其他效果
同一条命令还能做出游戏里其余的效果:hit-spark、slash、magic-burst、heal、portal、smoke-puff、dust、fire-loop、rain、snow、fireflies 和 falling-leaves。fire-loop 循环播放,适合火把和燃烧的残骸;hit-spark 和 slash 很短,用于战斗中的每一次命中。如果敌人应该碎裂或烧尽而不是爆炸,参见死亡效果教程。所有选项都在手册里。
问题
像素画爆炸应该有多少帧?
普通命中用每秒 12 帧播放八到十二帧;子弹击中之类的小爆炸可以是四到六帧,Boss 的死亡可以更长。除非你给定数字(如 explosion:10),Pixor 的爆炸是 12 帧。
爆炸能用我游戏的调色板吗?
可以。它和模型一样经过同一个风格渲染,所以用 --palette 指定 .hex、.gpl 或 .png 文件,或者用项目自己的外观,爆炸的每个像素都会落在这些颜色上。
同一条命令每次都会给出同样的爆炸吗?
会。粒子来自一个种子:同样的种子和设置总是给出同样的像素。改变 --effect-seed 就能得到变化,这样游戏里就可以有三个互不相同的爆炸。