godot2D游戏教程系列二(13)

前言:

完成目标

实现了"批量自动生成草丛",不用再手动一个个摆放。


具体实现了:

  • 新建 TileMapLayer_Grass 图层
  • 创建草丛专用图块集(32×32)
  • 选中草丛图块作为绘制标记
  • 给 TileMapLayer 添加脚本
  • 使用 Grass 场景的 UID 进行引用(避免路径失效)

核心逻辑:

  • 在图层上画草丛瓦片
  • 遍历所有瓦片
  • 每个瓦片位置实例化一个 Grass 场景
  • 隐藏原始瓦片显示

等于:

画一个瓦片 = 自动生成一个草丛场景


优化处理:

  • 给草丛添加随机位置偏移(更自然)
  • 随机水平翻转精灵(增加变化)
  • 对前后草丛分别处理翻转方式
  • 禁用原图块显示(只保留草丛场景)
  • 删除原本手动添加的草丛节点

最终效果:

现在只需要在 TileMap 上"刷草丛",

系统会自动生成带动画、带碰撞、带随机变化的草丛实例。

效率大幅提升,地图制作进入自动化阶段。

  • 实现过程:
  • 为了让地图增加更多的草丛,我们一个个复制移动添加显然是太麻烦了所以我们将使用TileMapLayer节点并编写一些脚本,让这项工作自动完成。
  • 我们回到主场景,选择level节点选择添加新的子节点,添加TileMapLayer节点,然后重命名为TileMapLayer_Grass
  • 新建一个瓦片集(图块集),然后设置尺寸为32*32
  • 然后我们来设置图块集,把那个草丛素材拖动到这个图块集的源里面去,然后不选择自动分割
  • 然后找到这张图片左下角的绿色草丛图块进行点亮
  • 然后我们右键点击我们新建的TileMapLayer节点,给我们这个节点添加一个新的脚本
  • 在场景文件夹中,按住Ctrl键并将grass.tsc文件拖入脚本中,然后godot就会为我们创建一个变量来引用这个草文件。但是这个是绝对路径当文件移动的时候就失效,所以我们需要一个相对路径就是UID,UID是每一个文件的唯一标识符。然后我们目前拖动下来使用的就是UID
  • 当然我们也可以来到草丛场景,右键点击来复制一下草丛场景的UID
  • 然后我们设置我们的草丛图块相当于我们的草丛场景,就是这个逻辑就是我们在图层上画多个瓦片,然后遍历每一个瓦片,将这些瓦片通通覆盖上我们的草丛场景,而原本的瓦片我们就隐藏视野。这样子的话,我们相当于画一个瓦片就是一个草丛场景,这样子方便快捷制作大量的草丛
  • 然后我们来给草丛增加一些随机偏移,让草地的分布更加分散一些
  • 然后我们随机翻转草丛精灵节点来创造更多的视觉差异,就获取到新建的2的精灵节点然后使用他们的水平翻转属性
  • 然后我们继续处理一下背后的草丛,用另外一种方式进行处理水平翻转
  • 然后我们将瓦片(图块)彻底禁用掉,将visible变为enabled
  • 然后另外我们还需要把原本添加到主场景的草丛场景节点给删除掉,因为不需要直接添加了
相关推荐
魔士于安几秒前
unity 卡通风整套资源 小鸟N套带动作+一套卡通风村落 和 相关道具+落叶粒子效果 buildin
游戏·unity·游戏引擎·贴图·模型
D_C_tyu9 分钟前
JavaScript | 数独游戏核心算法实现
javascript·算法·游戏
摇滚侠1 小时前
Java 零基础全套视频教程,面向对象(高级),笔记 105-120
java·开发语言·笔记
伽蓝_游戏1 小时前
第一章:解构游戏资源
游戏·unity·性能优化·c#·游戏引擎·游戏程序·assetbundle
tq10861 小时前
程序行为的效应构成:约束、规则与延迟固化的统一视角
笔记
Alice-YUE1 小时前
前端图片优化完全指南:从格式到加载的全面提速方案
前端·笔记·学习
沉默-_-2 小时前
备战蓝桥杯-哈希
c++·学习·算法·蓝桥杯·哈希算法
我想我不够好。2 小时前
监控学习 4.28 1.5 hour
学习
Stella Blog2 小时前
狂神Java基础学习笔记Day05
java·笔记·学习
枷锁—sha2 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 073】详解:静态编译下的自动化 ROP 链构建
网络·汇编·笔记·安全·网络安全·自动化