首页/ 第 14 章 · 3D 游戏进阶/ 第 244 课
LESSON 244 · 3D 游戏进阶

3D 水体与透明材质

水体完成。下一课做 3D 游戏优化。

⏱ 约 14 分钟📊 难度:入门🗂 第 14 章 · 3D 游戏进阶📍 第 244 / 300 课
课程进度
244 / 300

🎯本节学习目标

  • 实现水面材质
  • 实现漂浮物体
  • 实现交互

🚀课程导读

水“让 3D 场景灵动。本课实现水面、漂浮、行走效果。

水面材质

会动的”水“。

  1. 【水面】Plane 或 Quad 放大做水面(放在地形上方)。
  2. 【URP 水面】URP 自带 Water 相关 Shader(或商店”水体“资源)。
  3. 【基础方案】用 Standard 的 Transparent 模式 + 蓝色半透明 + 法线贴图(波浪感,第 189-190 课)。
  4. 【动起来】把法线贴图做 UV 偏移动画(第 128/190 课):
  5. 材质球 Main Texture Offset 随时间移动模拟流动。
  6. 【高级】URP 有 WaterSystem(Unity 6 内置水体工具,进阶)。
  7. 【漂浮物】物体在水面浮动:
  8. FloatObject:
  9. float waterLevel = 0f;
  10. void Update() {
  11. float targetY = waterLevel + Mathf.Sin(Time.time * 2f + offset) * 0.3f;
  12. transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, targetY, transform.position.z), Time.deltaTime);
  13. }
  14. 【完成】水面+漂浮物。
  15. 【注意】透明水体排序:Render Queue 调整(透明物体显示顺序)。
💡
水体 = 透明材质 + 蓝色 + 法线贴图偏移(动感)+ 漂浮脚本。四步有水。

水下效果与交互

下水与涟漪。

  1. 【水下】相机在水面下时:加全屏蓝色滤镜/低音效(第 196 课屏幕特效)。
  2. 【判断】相机 y < waterLevel 时启用水下效果。
  3. 【走进水里】触发器检测玩家进/出水,改移动速度/音效。
  4. 【涟漪】粒子或贴图做扩散圆环:
  5. ObjectPool.Instance.GetRipple(transform.position);(圆环粒子)。
  6. 【触水涟漪】物体落水时生成涟漪特效+音效。
  7. 【潜水】玩家潜水控制(进阶:浮力、方向)。
  8. 【测试】角色走进水里画面变蓝、落物起涟漪。
  9. 【完成】水体”能玩“。
  10. 【应用】湖、河、泳池关卡。
  11. 【注意】水下特效用 Volume 或全屏 Image 实现。
水下反馈 = 水面位置判断 + 蓝色滤镜 + 音效变化。涟漪=落水触发特效。

常见错误与排查

错误:水面看不到?
原因:透明没设或排序错
解决:材质 Rendering Mode 用 Transparent;Render Queue 调透明层。

动手练习

课后小任务(做出来才算真的学会)

  • 做会流动的水面
  • 做漂浮物
  • 做水下滤镜与落水涟漪

本节小结

水体完成。下一课做 3D 游戏优化。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课3D 物理破碎与可破坏