ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Godot 着色器实战:10 行代码让 2D 角色边缘泛起呼吸光晕

Godot 着色器实战:10 行代码让 2D 角色边缘泛起呼吸光晕 Godot 着色器实战10 行代码让 2D 角色边缘泛起呼吸光晕【免费下载链接】godotGodot Engine – Multi-platform 2D and 3D game engine项目地址: https://gitcode.com/GitHub_Trending/go/godot想让你的 2D 角色边缘随呼吸节奏泛起一层光晕吗用 Godot 着色器10 行代码、15 分钟就能跑起来光晕的快慢和颜色都做成面板上能拖的旋钮。先跑起来光晕效果最短代码选中场景里的 Sprite2D 节点 → 切到 Inspector 的材质项 → 点新建 → 选 ShaderMaterial → 点编辑把下面这段贴进去shader_type canvas_item; uniform float speed : hint_range(0.5, 5.0) 2.0; uniform float strength : hint_range(0.0, 3.0) 1.5; uniform vec4 halo_color : hint_color vec4(0.3, 1.0, 0.9, 1.0); void fragment() { float pulse sin(TIME * speed) * 0.5 0.5; vec4 halo texture(TEXTURE, UV vec2(0.015, 0.0)) * halo_color; vec4 halo2 texture(TEXTURE, UV - vec2(0.015, 0.0)) * halo_color; COLOR texture(TEXTURE, UV) (halo halo2) * pulse * 0.25 * strength; }跑起来你会看到角色的左、右边缘各晕出一圈青色光像呼吸一样一涨一落中心图案保持清晰——这就是 2D 边缘发光的最小实现。逐行拆解每行在干什么shader_type canvas_item;声明这是一个画布项着色器只能给 2D 节点用给 3D 模型就要换成spatial。三个uniform是面板上的旋钮hint_range让数值变成滑动条hint_color让颜色变成取色器你在 Inspector 里拖动它们画面实时变。sin(TIME * speed) * 0.5 0.5把每帧递增的TIME压进 0~1形成一个来回摆动的呼吸值。texture(TEXTURE, UV ± 0.015)把贴图左右挪 1.5% 再采样相当于复制出两张错位的底片错位的边缘自然成了光晕。最后一行把原图和两份光晕叠在一起pulse * strength控制光晕的呼吸幅度。改一行换节奏改一行换颜色想让它变快只动这一行uniform float speed : hint_range(0.5, 5.0) 4.0;呼吸节奏立刻加快一倍不用改任何逻辑。想换光晕颜色动这一行uniform vec4 halo_color : hint_color vec4(1.0, 0.4, 0.1, 1.0);青晕变暖橙再把strength拖到 2.5光晕范围也会跟着扩大离火焰质感不远了。你看到什么 → 多半是 → 这样改你看到光晕完全没出现 → 多半是给 3D 模型挂了这段代码 → 换 MeshInstance3D 的话把canvas_item改成spatial并且输出走ALBEDO而不是COLOR你看到光晕忽闪忽闪不连贯 →strength超出hint_range上限被钳住 → 把上限改成 3.0 或更大再试你看到角色整体变亮而不是边缘发光 → 叠加强度偏大 → 把0.25 * strength改小比如0.15 * strength往哪走两份入口doc/classes/Shader.xml 是 Shader 类的官方文档想查某个变量、语法时直接翻这里。modules/visual_shader/ 是可视化着色器的源码入口——不会写代码也能连节点做效果适合想彻底跳过代码的读者。动手任务在fragment()里再造一个sin(TIME * speed 3.14)用它驱动左、右两份光晕各自的强度你会得到一个左右交替亮起的心跳版本。觉得这个效果好用就点个星吧 ⭐【免费下载链接】godotGodot Engine – Multi-platform 2D and 3D game engine项目地址: https://gitcode.com/GitHub_Trending/go/godot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表