• 【UE 材质】力场护盾和冲击波效果


    目录

    效果

    步骤

    一、制作力场护盾材质

    二、制作冲击波材质效果 

    三、制作冲击波粒子效果

    四、制作震动效果


    效果

    步骤

    一、制作力场护盾材质

    1. 首先新建一个第一人称角色游戏模板

    2. 新建一个材质,用于作为力场护盾的材质,这里命名为“Mat_forcefield”

    打开“Mat_forcefield”,设置混合模式为“半透明”,着色模型为“无光照”,勾选双面(因为希望在力场护盾里面也能看见材质效果)

    在该材质中添加“Fresnel”节点,通过该节点我们可以得到边缘为1、相机观察的中心为0的输出结果

    我们可以通过给“ExponentIn”引脚传值来控制“Fresnel”的边缘效果,该值越小边缘效果越明显

    我们继续通过“Lerp”节点来混合两种颜色

    ("Lerp" 节点用来混合两种颜色,这对于实现颜色渐变、混合效果或过渡效果非常有用。通常,我们会将两种颜色连接到 "A" 和 "B" 输入,然后使用 "Alpha" 输入来指定混合的权重。)

    为了显示被赋予材质的物体与其他物体交叉时产生边界线的效果,我们可以使用“DepthFade”节点,如果此时我们做如下连接:

    可以看到被赋予材质的物体在于其他物体相交时会有消隐的效果

    并且如果输入的“FadeDistance”值越大,消隐的距离就越多

    如下,此时我们就可以看到交叉的部分有一个边缘效果

    调整透明度:

     

    如果觉得边缘效果太明显,可以给“FadeDistance”输入一个值

    3. 下面我们想把纹理也结合到材质上

    首先找到模板工程自带的纹理“T_Tech_Hex_Tile_M”

    将该纹理应用到材质中

    如果我们希望纹理UV平铺次数增加,可以添加如下节点,这里我们设置平铺次数为10,可以看到纹理密度增加了10倍

    如果我们认为纹理太清晰,我们可以通过乘上一个0~1之间的数来调整纹理的不透明度

    二、制作冲击波材质效果 

    1. 新建一个actor蓝图类,用于表示力场护盾蓝图,命名为“BP_ForceField”

    打开“BP_ForceField”,先添加一个球形碰撞组件

    将该组件指定为新的根组件

    再添加一个球形的静态网格体,调整缩放使其正好能够被球形碰撞组件包裹

    给球形静态网格体赋予我们步骤一创建的材质

    在事件图表中添加一个球形组件命中时的事件

    我们可以先测试一下当子弹击中actor时会不会有打印信息:

    可以看到是有打印信息的

    2. 这里额外提一句,如果想要类似于曳光弹的效果,最简单的方法是将子弹的材质换成自发光材质,然后拉伸一下:

    3. 回到材质“Mat_forcefield”,添加如下节点,我们给主要给“SphereMask”节点传入两个位置(一个是本材质的世界位置,另一个是自定义的参数位置)和一个半径参数,表示在本材质基础上创建一个圆心是“pos”,半径是“半径”的球体,球体和材质相交的圆形部分会被新的材质代替

    4. 打开蓝图“BP_ForceField”,添加如下节点,表示在子弹命中立场护盾(本acotr)时,我们创建了一个动态材质实例来替换命中区域的材质,并且设置材质“Mat_forcefield”中的参数“pos”和“半径”

    ,其中参数“pos”的值由检测到的碰撞点的位置决定,参数“半径”由用户自己设置

    此时当子弹碰到力场护盾后就会在命中区域替换新材质

     

    如果我们想让新加在力场护盾上的材质有一个渐变的效果,如下:

     为了实现如上效果,我们需要在蓝图“BP_ForceField”中继续添加一个时间轴节点

    时间轴内容如下:

    5. 回到材质“Mat_forcefield” 中,添加一个“Sine”节点

    此时效果如下:

    如果我们将“Sine”节点的句号键设置为0.5

    此时击中的效果如下: 

    如果我们希望击中时叠加一个效果,我们可以继续在材质“Mat_forcefield” 添加如下节点 

     

    此时击中力场护盾的效果如下:

    再添加一个“Max”节点

    再将限制范围改到0~15

    此时击中效果如下

     三、制作冲击波粒子效果

    1. 新建一个级联粒子系统,这里命名为“P_Debri”

    2. 再新建一个材质,这里命名为“Mat_dot”

    打开材质“Mat_dot”,设置混合模式为“半透明”,着色模型为“无光照”

    添加如下节点,其中"RadialGradientExponential" 材质函数节点用于创建径向梯度效果。这个节点通常用于创建径向渐变效果,其中颜色或其他属性从一个中心点向外扩散,呈指数级衰减。

    3. 打开粒子系统“P_Debri”,在“必需”模块中设置材质为“Mat_dot”

    设置“初始速度”模块中的起始速度如下所示

    设置“生成”模块中比率为50

    设置“生命内颜色”模块中的颜色为(22,2,0.1)

    在“必需”模块中设置“屏幕对齐”为“PSA速度”

    在“初始大小”模块中,设置起始大小如下

    添加一个“加速度/生命”模块

    在该模块中我们添加三个点

     

    这样就能使粒子在z轴方向上首先以500大小的加速度发射出去,然后在0.5处时加速度逐渐变为-200,最后,加速度到达-20000,效果如下:

    在“生成”模块中,设置生成比率为0

     在“爆发”选项中,添加一个喷发列表,数量设为50

    此时效果如下:

    再添加一组元素

    此时效果如下:

    为了让粒子只播放一次,我们需要在“必需”模块中设置“发射器循环”为1。(0表示无限循环)

    我们复制一份发射器

    在新发射器中,设置“生命内颜色”模块的颜色如下:

    在两个发射器的“必需”模块中,设置他们在Y轴方向上的旋转值为90°

    4. 为了能够在子弹击中力场护盾时触发粒子,在蓝图“BP_ForceField”的事件图表中添加如下节点

    其中,粒子生成时的位置由碰撞点获得:

    粒子的生成方向由“Impact Normal”提供

    此时效果如下:

    可以看出两段粒子效果间隔的比较久

    我们这里对两个发射器中的“生成”模块做如下修改,将第二个喷发列表成员的时间由0.5改为0.1

    如果觉得粒子发射后下降的太快了,我们需要将两个发射器中的“加速度/生命”模块中的如下值有-20000改为-5000

     

    四、制作震动效果

    1. 打开材质“Mat_forcefield”,添加如下节点

    最终效果如下

    参考视频链接:

    https://www.youtube.com/watch?v=hQeJETEUzE4&t=503s

  • 相关阅读:
    vulntarget-b靶场详细通关记录
    五天搞定Mysql基础知识-Day05
    c# 读写内存映射文件
    RabbitMQ-高级篇-黑马程序员
    Timm一些知识点
    杰理SDK使用CODEBLOCKS编译出错“不是内部或外部命令,也不是可运行的程序“解决方法
    深圳/河南/天津/山东产品经理国际认证NPDP招生简章
    【WPF系列】- Application详解
    CentOs7.6使用yum命令安装mysql8.0
    常见上下文切换场景
  • 原文地址:https://blog.csdn.net/ChaoChao66666/article/details/132752284