UE5 蓝图学习计划 - Day 11:材质与特效
在游戏开发中,材质(Material)与特效(VFX) 是提升视觉体验的关键元素。Unreal Engine 5 提供了强大的 材质系统 和 粒子系统(Niagara),让开发者可以通过蓝图控制 动态材质、光效变化、物体交互特效 等视觉效果。本篇文章将学习如何使用 动态材质(Dynamic Material) 和 粒子特效(Niagara),并结合蓝图实现交互式的视觉效果。
理论学习
- 材质系统(Material System)
材质(Material) 定义了物体的外观,包括颜色、纹理、光照反射等。在 UE5 中,材质可以结合蓝图 动态修改,实现诸如:- 颜色变化(如角色受伤时变红)
- 透明度渐变(如物体逐渐消失)
- 自发光特效(如科幻门禁系统)
- 动态材质(Dynamic Material)
动态材质实例(Dynamic Material Instance) 允许在游戏运行时修改材质参数,而不影响原始材质:- 使用 Create Dynamic Material Instance 创建动态材质实例。
- 通过 Set Scalar Parameter Value 或 Set Vector Parameter Value 修改材质参数。
- 粒子系统(Niagara)
Niagara 是 UE5 新一代粒子特效系统,能够创建 火焰、烟雾、能量爆炸 等高级特效,并可通过蓝图触发或控制:- 在场景中特定位置播放特效。
- 角色受击时触发火花特效。
- 武器攻击时生成能量波动。
实践任务:动态材质 + 交互特效
目标
- 创建一个动态材质
- 让物体靠近时变亮(自发光效果)。
- 使用蓝图控制材质
- 通过 Trigger Box 触发材质颜色变化。
- 添加粒子特效
- 在角色触碰物体时触发 闪电粒子效果。
步骤 1:创建动态材质
-
创建基本材质
- 在 Content Browser 中,右键 Material > Material,命名为 M_GlowingObject。
- 双击打开材质编辑器,进行以下操作:
- 添加一个颜色参数:
- Vector Parameter(命名为 Color)。
- 连接到 Base Color 输入。
- 添加一个自发光参数:
- Scalar Parameter(命名为 GlowIntensity)。
- 连接到 Emissive Color 输入。
- 添加一个颜色参数:
- 保存材质,返回主界面。
-
在蓝图中创建动态材质
- 在 Content Browser 创建一个 Actor 蓝图,命名为 BP_GlowObject。
- 添加以下组件:
- Static Mesh(设置为立方体或球体)。
- Box Collision(作为触发区域)。
-
初始化动态材质
- 在 Event Begin Play 事件中:
- 创建动态材质实例:
- 存储材质变量,以便在后续修改颜色。
- 在 Event Begin Play 事件中:
步骤 2:使用蓝图触发材质变化
-
进入触发区域变亮
- 在 BP_GlowObject 中,添加 OnActorBeginOverlap(触发事件)。
- 修改材质颜色:
-
离开触发区域恢复
- 在 BP_GlowObject 中,添加 OnActorEndOverlap(触发事件)。
- 修改材质颜色:
-
测试效果
- 在场景中放置 BP_GlowObject。
- 运行游戏,控制角色进入和离开触发区域,观察物体是否变亮和恢复。
步骤 3:添加 Niagara 粒子特效
-
创建 Niagara 系统
-
在 Content Browser,右键 Niagara System,创建 NS_ElectricSpark。
-
选择 New system from selected emitter(s),点击下一步,选择Fountain,点击加号,点击Finish。
-
-
在蓝图中播放特效
- 在 BP_GlowObject 的 OnActorBeginOverlap 事件中:
- 添加 Spawn System at Location:
- 这样,当角色靠近时,物体会变亮并触发特效。
- 在 BP_GlowObject 的 OnActorBeginOverlap 事件中:
-
测试效果
- 运行游戏,角色进入触发区域,观察 动态材质 + 粒子特效 的组合效果。
- 运行游戏,角色进入触发区域,观察 动态材质 + 粒子特效 的组合效果。
学习收获
通过今天的学习,你掌握了:
- 如何创建动态材质 并使用蓝图控制它的颜色和光效。
- 如何结合 Trigger Box 触发材质变化,让物体在角色靠近时发光。
- 如何使用 Niagara 粒子系统,在交互事件中播放特效。
下一步学习计划
接下来,我们将学习 存储与加载系统,探索如何使用 SaveGame 让玩家数据(如血量、进度、道具)在游戏重启后保持不变!🚀