实践:特效与粒子
本文使用的是上一篇文章中的武器引擎,所以要跟着做,请确保先做完了上一篇的内容。
本节将会讲到:受击敌人特效,枪口烟雾,弹壳效果,基于列表的克隆体间数据传输,具有高可扩展性的粒子引擎。
受击闪烁
上面的靶子,就做上了简单的动画脚本。
转到【敌人】角色,你会发现我预留好了接口。加上简单的图形特效,就能呈现一些攻击的影响。
一定要保证脚本末尾把图形特效清零,而不是先加再减,否则短时间内广播多了会乱套。因为接收到广播时,程序会掐断当前的进程,从头开始执行。
粒子引擎
新建一个角色“粒子”,然后从敌人那里,把实体的显示和定位脚本拉复制过来。
别忘了,还有适配大地图缩放的“巨大”和“虚无”两个造型。
先做命中粒子,顺便构建框架。
命中粒子的种类可以多种多样,取决于你的敌人是什么“材质”的。喷出的是血滴,金属碎片,还是某种魔法能量团?
但它们有一些共同点,就是要体现“爆开”的过程。
画个经典发光球。
新建一个全局列表【粒子生成信息】,用来当带信息的广播。你也可以用多莉扩展。
别忘了临时列表初始化。
有固定格式的列表,记得在背景里留个注释。
几个月后,重新掏出这个作品时,你会感谢现在的自己的。
切换到【粒子】角色,接下来是粒子处理克隆请求的脚本。
不刷新屏幕,不然一帧里面只能处理一个粒子请求了。
还是不刷新屏幕。
接着是克隆体的脚本,主角登场)
不管中间是什么,粒子是哪个类型,它们的结局一开始就注定了。
建立几个私有变量,用来控制粒子的运动。
补充上对应的脚本,保证运行顺序在本帧贴图被渲染前。
线速度是根据方向附加的速度,方便给粒子做出方向性。
X 和 Y 速度拆出来,方便施加方向不变的加速度,比如烟雾往上飘,液体往下滴。
角速度是左右转动的速度,叠加三角函数可以做出曲线轨迹。
为什么没把方向用变量记录呢?因为物体的转向不会受到限制。不像大小和位置,改动时需要对应的支持脚本,才不会被 scr 引擎的限制卡掉。
别忘了初始化。
接下来是克隆体的脚本。
这一段是已经调好的粒子参数。
最终效果如下:
如果你对这个效果并不满意,也可以改动一些参数,或者在模板的基础上加功能。
枪口烟雾
枪口烟雾能配合武器动画,进一步体现枪械开火的气浪。
现在先做手枪的。
在【武器】角色的开火脚本里面安插粒子的请求。
加上对应的粒子处理脚本。
以后的粒子都可以调用这个引擎。
然后是粒子的贴图,直接复制一个血团,改成灰色。
大多数情况下,我会建议你把烟雾做成白色,只是这里的背景是白的。
复制一段血雾粒子的脚本,插在后面,简单改改参数。
前面的血雾忘了加切换造型,记得补上。
这里用移到最前面,是因为这只是示例作品,你可能需要一个更好的图层管理系统,比如Arkos的图层扩展。
弹道烟雾
弹道烟雾需要由子弹来克隆烟雾。
复制一个受击粒子,然后调成灰色。
加上对应的生成脚本。
然而,这个直的烟雾,看起来有些太规整了。
如果你想加上一些随机飘散的效果,可以加上一点随机的方向和速度。
如果你感觉烟雾粒子太多,可以加上一些条件,来控制烟雾的生成。
粒子效果就是这样,需要不断地调试,调出自己满意的效果。
什么,你在找弹壳?Arkos的引擎做过了!
最后,这是成品,如果哪一步没搞懂,可以看看。
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=gun-art-tutorial/mbzzw/Lec09&type=comment"
title="{mbzzw 的射击游戏工具箱 02-3}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>