【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109913.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无涯教程-JavaScript - MATCH函数

描述 MATCH函数在单元格范围内搜索指定的项目,然后返回该项目在该范围内的相对位置。 当您需要某个项目在范围中的位置而不是项目本身时,请使用MATCH而不是LOOKUP函数之一。如。您可以使用MATCH函数为INDEX函数的row_num参数提供一个值。 语法 MATCH (lookup_value, lookup…

Linux mac Windows三系统 局域网文件共享方法

主要工具: Samba是一个开源的软件套件,允许Linux系统与Windows系统之间共享文件和打印机。 一、首先是Linux共享的设置 ①安装 sudo apt-get install samba ②创建共享文件夹 sudo mkdir /home/share ③配置用户 sudo smbpasswd -a kequan ④修改…

基于matlab实现的平面波展开法二维声子晶体能带计算程序

Matlab 平面波展开法计算二维声子晶体二维声子晶体带结构计算,材料是铅柱在橡胶基体中周期排列,格子为正方形。采用PWE方法计算 完整程序: %%%%%%%%%%%%%%%%%%%%%%%%% clear;clc;tic;epssys1.0e-6; %设定一个最小量,避免系统截断误差或除零错…

哨兵1号(Sentinel-1)SAR卫星介绍

1. 哥白尼计划 说起欧空局的哨兵1号,就不得不先说一下欧空局的“哥白尼计划”。 欧空局的哥白尼计划(Copernicus Programme)是欧空局与欧盟合作的一项极其重要的地球观测计划。该计划旨在提供免费开放的、可持续的地球观测数据&#xff0c…

算法训练营day48|动态规划 part09:打家劫舍(LeetCode 198.打家劫舍、213.打家劫舍II、337.打家劫舍 III)

文章目录 198.打家劫舍思路分析代码实现思考总结 213.打家劫舍II思路分析代码实现 337.打家劫舍 III (树形DP)思路分析代码实现思考总结 198.打家劫舍 题目链接🔥🔥 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金&#…

[面试] 15道最典型的k8s面试题

文章目录 在 Kubernetes 中,有以下常见的资源对象:1.什么是 Kubernetes?它的主要特点是什么?2. Kubernetes 中的 Pod 是什么?它的作用是什么?3.Kubernetes 中的 Deployment 和 StatefulSet 有何区别&#x…

大数据技术之Hive:先导篇(一)

目录 一、什么是Hive 二、思考如何设计出Hive功能 2.1 提问 2.2 案例分析 2.3 小结 三、掌握Hive的基础架构 3.1 Hive组件 - 元数据存储 3.2 Hive组件 - Driver驱动程序 3.3 Hive组件 - 用户接口 一、什么是Hive 什么是分布式SQL计算 我们知道,在进行数据统…

C# 辗转相除法求最大公约数

辗转相除法求最大公约数 public static void CalcGCD(int largeNumber, int smallNumber, out int GCD){GCD 1;int remain -1;while (remain ! 0){remain largeNumber % smallNumber;GCD smallNumber;largeNumber smallNumber;smallNumber remain;}}

Python爬虫基础(四):使用更方便的requests库

文章目录 系列文章索引一、requests库的使用1、官方文档2、安装requests库3、简单使用4、使用get请求5、使用post请求6、使用代理 二、实战1、实战:实现古诗文网的登录(1)找到登录页面(2)登录操作需要的数据&#xff0…

MongoDB的搭建 和crud操作

MongoDB docker 下载 docker run --restartalways -d --name mongo -v /docker/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6使用navcat工具使用MongoDB Crud操作 jar包 <dependency><groupId>org.projectlombok</groupId><artifactId>lom…

Web安全与攻防

Web安全概述 在Internet大众化及Web技术飞速演变的今天&#xff0c;在线安全所面临的挑战日益严峻。伴随着在线信息和服务的可用性的提升&#xff0c;以及基于Web的攻击和破坏的增长&#xff0c;安全风险达到了前所未有的高度。Web安全可以从以下三个方面进行考虑&#xff1a;…

负载均衡-ribbon源码解析

负载均衡-ribbon源码解析 1 LoadBalanced注解 /*** 基于ribbon调用服务及负载均衡* return*/ LoadBalanced Bean public RestTemplate restTemplate(){return new RestTemplate(); }Bean ConditionalOnMissingBean public RestTemplateCustomizer restTemplateCustomizer(fin…