教程地址:https://www.bilibili.com/video/BV1fE411b7at
一套基础入门且案例非常完整的教程,能够比较快的走一遍制作流程
讲师:贾越(Epic Fornite Technical FX Artist),Asher(虚幻引擎技术支持TA),大钊(虚幻引擎社区经理)
弹坑贴花
材质
创建材质,重命名M_Decal
固有色,金属度,高光度为0,粗糙度为1,接下来是使用贴图纹理
里使用教程提供文件T_Decal_Small_Scorch_A.uasset
使用曲线采样上颜色
逻辑实现
双击打开蓝图
这里我们之前编辑过开枪逻辑,现在我们要在开枪击中后添加贴花
创建“spawn decal Attached”(生成贴花已附加),这个模式创建的贴花会附加到被击中的位置上。跟随位移选择等变形
连接上
把中断命中结果的Hit Component连接到Attach to Component
指定贴花材质
指定释放位置
贴花大小,设置旋转,空间类型
击打后可以看到击中处产生了贴花,并且会附着在物体上
材质亮度变化
接下来我们处理下贴花的亮度变化
这里我们需要先创建一个材质实例,材质右键-创建材质实例
在蓝图中创建动态材质实例,指定材质实例
先点住动态材质实例的返回值端口,拽出来创建设置标量数值。这里不直接创建后连接,是因为我无法直接创建出目标是材质动态实例的节点,导致目标无法相连
最后修改下参数名称,并把游戏时间值传给这个动态属性
蓝图创建了动态属性,那么我们就需要在材质上调用它
创建一个标量属性,属性名为我们蓝图的动态属性TimeStamp
再创建一个时间,这两个时间参数有什么不同,TimeStamp的值是开枪时的时间,Time是当前时间,我们用当前时间减去开枪时的时间,就可以得到带枪后的时间变化
这里直接连接到颜色上就能开到贴花会由黑边白,
这里值会随时间增长,我们让它在3秒内是0到1的变化值,然后映射到曲线上控制
我先限制值的范围0-3,然后再除以3,就得到0到1的值,而3秒后值都为1(为什么不用教程的方法和生命值关联,因为我想让贴花不要这么快就消失,那生命值就会很大,曲线就不好控制)
把当前结果连到颜色上,运行你会发现,变亮的速度变慢了
接下来我们进行曲线映射
依旧创建一个曲线图谱,选择之前创建的图谱,但是曲线我们新建一个
曲线我们需要一个通道控制颜色,让它有个衰减,透明度就不控制了
击中点火焰
复制之前做的枪火发射器,重命名,这里我先禁掉了其他发射器
修改位置为之前求的击中点位置
运行,发现击中点位置不对,大概是世界空间和本地空间的问题
取消本地空间后,位置正确了,但是旋转是错的
我们根据之前求位置的方式去求法线位置
进蓝图,复制一个设置Niagara变量,连接
在参数栏新建一个向量,修改名称为hitNormal
并把参数关联到Mesh Orientation上
击中点火星
一样把枪口火花复制一份,重命名
火花的位置一样修改成击中点位置
尝试运行,并没有看到火花,这是因为我们需要设置发射的方向
找到发射器,把发射轴设置为HitNormal,运行可以看到火星已经正常出现了
后面就是火星动态的调整
影响光
在枪火部分,我们是有在发射器上做了影响光的,但在击打点却几乎看不出来,即时调很亮
这是因为灯光和受击模型穿插了,我们需要把受击点的位置延法线移动一点点即可
在蓝图位置的传输过程中加了一个单位的Nomal值
蹦出的小石块
这里我们还是拿火花发射器来改,除了同样位置和旋转的修改,最主要的知识点是序列贴图的使用
这里使用教程提供资产:
创建材质球,把贴图拖进去
材质球为半透明,这里为什么要要半透明,主要是因为后面会使用GPU粒子,计算深度贴图来做碰撞,用不透明模式会计算出错
回到发射器设置,设置sprite材质
我们需要让每个粒子只读取贴图里的一块,这需要用到subUV
默认读第一块,
我们要怎么随机读不同的石头,可以到bindings去找线索,可以看到通过改变SubImageIndex值可以设置不同的子图像索引
怎么设置SubImageIndex值?这里没找到教程上的添加项
但是我们可以在参数栏找到这个参数,并把它拖到发射器
尝试更改值,效果是对的,接下来就是给个随机值了
然后调整下随机旋转,大小
添加重力,由于石头质量大,所以受到的阻力和扰乱几乎感受不到可以关掉
生命值提高。修改大小变化曲线让最后有个逐渐消失就行问题不大,
现在有个问题是石头落到地面后没有碰撞
这里可以直接添加碰撞模块
现在大体功能有了,我们先调整下细节
整体大小还是太统一了,为了实现更加可控的随机度,月神给了一个非常清奇的方法
思路
- 给每个粒子随机值
- 通过随机值映射曲线取值
- 控制曲线区间
重置spriteSize
添加Vector 2DFrom Float,通过一个浮点数来控制整体
添加Float from Curve ,通过曲线来控制大小,默认曲线是根据时间变化改变数值,而这里我们则是要通过一个随机数来取值
如何创建一个随机值?
通过参数创建一个粒子属性,类型浮点数
设置这个值:
把参数替换到曲线索引上
现在是标准的0-1平均分布,但一般我们大块石头量是比较少的,小块石头是比较大量的,现在我们就可以通过曲线来调
通过调整曲线,我们就可以方便的控制大中小粒子的分布比例
接下来,尝试把Cpu粒子改成Gpu粒子,Gpu粒子发现开下一枪的时候前面的粒子就消失了,暂时不知道怎么调整,看需要取舍吧
大体练习效果就到这了,一个比较完整的案例,如果重头再做一次估计才能吸收下来