大二做游戏的学习记录
2D地图制作
Tilemap
是用来创建2d游戏地图的工具,允许使用Tile(瓦片)来拼接和绘制出一个大型的2D游戏场景
只适用于显示地图,不直接进行物理交互
如何使用Tilemap制作地图?
步骤 1: 创建 Tilemap 游戏对象
创建一个 2D 项目(如果你还没有创建的话)。
在 Hierarchy 面板中,右键点击空白处,选择 2D Object -> Tilemap -> Rectangular。
这将创建一个新的 Tilemap 对象,并自动在下方创建一个 Grid 对象。Grid 对象用于管理 Tilemap 的网格。
你会在 Hierarchy 面板看到:
Grid:父物体,管理 Tilemap 的布局。
Tilemap:子物体,包含具体的瓦片数据。
步骤 2: 创建瓦片资源(Tiles)
瓦片(Tiles)是地图的构建块。你需要将图像(Sprite)转化为瓦片资源。
导入图像:
首先,确保你已经将游戏中的瓦片图集(Tile Sheet)导入到 Unity 中。这通常是一个包含多个瓦片的小图片,像是草地、道路、墙壁等。
将图像文件拖拽到 Unity 的 Project 面板中。
切割图集(Sprite Sheet):
选中图像文件,在 Inspector 面板中将 Sprite Mode 改为 Multiple。
点击 Sprite Editor 按钮,进入精灵编辑器。
在精灵编辑器中,点击 Slice 按钮,选择 Grid By Cell Size 或 Grid By Cell Count,根据你瓦片的大小或数量进行切割。
确保每个瓦片的大小一致,并切割成你想要的瓦片。
创建瓦片(Tiles):
切割完成后,选中每一个切割出来的单个瓦片,在 Project 面板中右键点击图像,选择 Create -> Tile。
每个切割出的瓦片都会变成一个 Tile 资源。你可以将这些瓦片命名为:GrassTile、WallTile 等等。
步骤 3: 创建 Tilemap 并绘制地图
选择 Tilemap:
在 Hierarchy 面板中,选中你的 Tilemap 对象。
打开 Tile Palette:
在 Unity 编辑器的顶部菜单栏,选择 Window -> 2D -> Tile Palette,打开 Tile Palette 窗口。
Tile Palette 是一个绘制瓦片的工具,它显示你所有的瓦片资源,并允许你将这些瓦片绘制到 Tilemap 上。
将瓦片拖入 Tile Palette:
在 Project 面板中找到你创建的 Tile 资源,将它们拖动到 Tile Palette 窗口中。你可以创建多个 Tile Palette,每个 Palette 可以包含不同类型的瓦片(例如,草地、道路、墙壁等)。
选择绘制工具:
在 Tile Palette 中选择你想要的瓦片,接着使用画笔工具在 Scene 视图中的 Tilemap 上绘制瓦片。
你可以使用不同的绘画工具:
Brush:单个瓦片绘制工具。
Box Fill:填充区域内的所有瓦片。
Flood Fill:用选中的瓦片填充整个区域。
Erase:删除已绘制的瓦片。
步骤 4: 添加碰撞体和物理效果
添加 Tilemap Collider 2D:
如果你的地图需要碰撞体(例如玩家和其他物体不能穿过墙壁),你需要为 Tilemap 添加 Tilemap Collider 2D 组件。
选择 Tilemap 对象,在 Inspector 面板中点击 Add Component,然后选择 Tilemap Collider 2D。
这将自动为每个瓦片添加一个 2D 碰撞体。
优化碰撞体(使用 Composite Collider):
如果 Tilemap 中的瓦片很多,碰撞体的数量会非常大。为了优化性能,你可以使用 Composite Collider 2D 来合并多个碰撞体。
选中 Tilemap 对象,再添加 Composite Collider 2D 组件。
同时,确保 Tilemap Collider 2D 组件的 Used by Composite 选项被勾选。
为动态物体添加物理效果(Rigidbody 2D):
如果你的角色或其他物体需要与 Tilemap 进行物理交互,记得为这些物体添加 Rigidbody 2D 组件。
Tilemap Renderer
是负责将 Tilemap 中的瓦片渲染到屏幕上的组件。它决定了如何渲染 Tilemap,通常你可以在该组件的属性面板中设置瓦片的渲染顺序、材质、排序层等。
Sorting Layer:你可以设置 Tilemap 渲染的层级,控制它与其他物体(如角色、敌人等)的显示顺序。
Order in Layer:调整瓦片在排序层中的显示顺序。
Tilemap Collider 2D
Tilemap Collider 2D 是 Tilemap 的物理碰撞体,它可以自动根据 Tilemap 中的瓦片形状创建相应的碰撞体。这意味着你无需为每个瓦片手动添加碰撞体,Tilemap Collider 会自动为所有瓦片生成 2D 碰撞体。
当角色或物体与 Tilemap 上的瓦片发生碰撞时,碰撞体会检测到并进行物理响应。