This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
粒子特效用以为游戏呈现视觉效果.可以用来表现爆炸, 喷血, 拖尾, 天气等等效果.
粒子特效包含一些发射器以及可选的修改器:
在 Assets 浏览器菜单栏选择 New... ▸ Particle FX. 为新建粒子特效命名. 编辑器会为其自动打开 场景编辑器.
在 Outline 面板中显示出默认粒子发射器. 点选发射器 Properties 面板会对应更新.
新建发射器, 右键点击 Outline 视图, 从上下文菜单中选择 Add Emitter ▸ [type]. 其中发射器类型可以创建后在属性里更改.
新建修改器, 右键点击 Outline 视图里的发射器, 从上下文菜单中选择 Add Modifier, 再选择修改器类型.
在根节点 (而不是发射器子级) 上添加的修改器会作用域所有粒子.
作为在发射器子集添加的修改器只会作用域该发射器的粒子.
在发射器和修改器上做的属性修改会立即反映在预览之中, 即使是在暂停状态:
Once
播放结束后即停止.Loop
播放结束后再次播放.Auto
基于图片大小.Manual
基于 size 设置.World
世界空间.Emitter
发射器空间.Alpha
, Add
或者 Multiply
.Circle
从圆的内部随机位置发射粒子. 发射方向背向圆心. 圆直径基于 发射器 Size 的X值.
2D Cone
从锥形(三角形)的内部随机位置发射粒子. 发射方向为锥顶到锥底. 宽度基于 发射器 Size 的X值, 高度基于 Y值.
Box
从盒子的内部随机位置发射粒子. 发射方向延盒子本地 Y 轴方向. 发射器 Size 的X值, Y值 和 Z值 分别定义宽度, 高度和长度. 如果需要2D矩形, 把Z值设置为0即可.
Sphere
从球体的内部随机位置发射粒子. 发射方向背向球心. 球体的直径基于 发射器 Size 的X值.
Cone
从锥体的内部随机位置发射粒子. 发射方向为锥顶到锥底. 宽度基于 发射器 Size 的X值, 高度基于 Y值.
Default
元向量方向Initial Direction
粒子初始化方向.Movement Direction
速度向量方向.World
时有效. 发射器速度每帧更新.Blend Mode 属性定义了可视组件如何与其后面的图像混合. 以下列举了支持的混合模式及其混合算法:
src.a * src.rgb + (1 - src.a) * dst.rgb
src.rgb + dst.rgb
src.rgb * dst.rgb
src.rgb - dst.rgb * dst.rgb
这种属性分为两个部分: 一个数值和一个抖动. 抖动就是施加于粒子上的随机数值. 比如数值是 50 抖动是 3, 则最终值的范围就是 47 到 53 (50 +/- 3).
点击关键帧按钮, 则属性值由一条曲线决定. 恢复数值加抖动模式, 取消点选关键帧按钮即可.
曲线编辑器 (位于视口下方) 用以修改曲线. 这种属性不会显示在 属性 视图中, 只能显示在 曲线编辑器 中. 通过 点击拖动 控制点与其切线来修改曲线形状. 双击 曲线添加控制点. 双击 控制点可以删除它.
自动缩放显示完整曲线快捷键为 F.
以下属性都可以基于发射器发射时间周期用曲线表示:
Automatic
并且粒子使用基于图片大小的逐帧动画的话, 此属性无效.以下属性都可以基于粒子的生命周期用曲线表示:
粒子的速度受以下四种修改器影响:
Acceleration
Drag
Radial
Vortex
开始/停止粒子特效播放的脚本命令:
-- 开始当前游戏对象上的粒子特效组件 "particles" 的播放
particlefx.play("#particles")
-- 停止当前游戏对象上的粒子特效组件 "particles" 的播放
particlefx.stop("#particles")
即使粒子特效组件依附的游戏对象被删除, 粒子效果也不会停止播放.
详情请见 粒子特效索引文档.
粒子特效默认的材质常量可以使用 particlefx.set_constant()
和 particlefx.reset_constant()
进行设置和重置 (详情请见 材质教程):
tint
vector4
). 四元组的 x, y, z, 和 w 分别对应红, 绿, 蓝和不透明度. 详情请见 API 文档上的示例.在 game.project 文件里有些关于粒子效果的 设置项目.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB