Unity2D游戏开发-使用URP并实现激光效果

前言

在做射击游戏的时候,我们会需要激光枪射击的激光效果。

这里使用带有光晕的材质来实现。

开启URP

Window => Package Manager 中搜索Universal RP,并安装

如果已经安装则跳过

image-20230805134453719

在Assets文件夹下新建

Create => Rendering => URP Asset (with Universal Renderer)

我这里文件命名为ZURPAsset

会生成两个文件

  • ZURPAsset
  • ZURPAsset_Renderer

项目中设置

Edit => Project Settings

选择我们刚创建的

image-20230805160108133

开启全局光晕

在场景中添加

image-20230805160348400

选中 并新建配置文件

image-20230805160600852

新建后会增加一个按钮

image-20230805160705034

添加后处理中的Bloom

image-20230805160727471

设置值

image-20230805160852511

其中

  • Threshold 是阈值 也就是超过这个亮度值会生效
  • Intensity 这是增加的强度

也就是说我们设置过这个后 亮度超过1的物体会更加的亮的光晕效果。

我们可以测试一下是否生效

Threshold调整为0,如果发现整个界面出现光晕了,就证明全局光晕效果可用了。

测试后再把Threshold调整为1。

激光效果

激光效果实现的思路是 线渲染器渲染的线上添加上光晕来实现。

光晕效果是通过设置一个亮度超过1的材质,从而出现光晕效果。

线渲染器

首先添加线渲染器

在我们任意对象上添加组件 Line Renderer

image-20230805162417542

image-20230805162508215

一定要设置这三个地方,才能看到效果

  • Positions 中 Size设置为2,证明我们的线只有一个开始点和一个结束点,结束点一定要设置,负责线的长度为0,肯定看不到。
  • Materials 一定要选择材质,否则也不会渲染,后边我们就是修改这个地方来实现光晕的效果的。
  • 排序 一定要上我们的位置在上层,否则也看不到。
  • 颜色的话设置为我们需要的就行。
  • Width是线的宽度。

这时候线是这样的

image-20230805162932213

制作光晕的材质

在Assets文件夹下新建Shader文件夹

创建Sprite Unlit Shader Graph

在 Unity 的 Shader Graph (Shader 图)中,Sprite Unlit Shader 是一个专门用于渲染 2D Sprite 的非照明 Shader。

它的主要特征和作用:

  • 不受光照影响,Sprite 永远是完整颜色,不会出现明暗部分
  • 支持 Alpha 通道透明度
  • 可以通过节点调整颜色、透明度等参数实现Sprite动画效果
  • 进行平滑和非平滑两种像素化渲染模式之间切换
  • 可添加自定义节点进行UV动画、扭曲、像素化等效果
  • 可结合2D Animation实现复杂的Sprite动画和视觉效果相比内置的 Sprite-Default Shader,使用 Shader Graph 可以更灵活地控制 Sprite 的渲染效果。

在Shader下创建

Create => Shader Graph => URP => Sprite Unlit Shader Graph

设置名称为ColorGraph

image-20230805163351257

双击打开文件

image-20230805164855333

默认只有框中的部分

在左侧添加两个入参

  • Color 输入颜色
  • Texture2D 设置精灵

其中Color要设置为HDR模式,设置HDR后输入的颜色才能亮度大于1 。

image-20230805165122335

设置完成后一定要点击 左上角的 Save Asset 进行保存。

新建材质

右键上一步创建的ColorGraph 点击Create => Material

命名为BrightMaterial

image-20230805165907831

这两个输入就是上一步创建的输入参数

Texture2D 随便选一个白色贴图

我这里使用的是自带的

image-20230805170221010

Color中设置

image-20230805170319789

这里设置强度大于1,让光晕生效。

使用材质

Line Renderer的属性中设置新的材质就可以了。

image-20230805170610736

这时候效果就变成这个了

image-20230805171059729