15分钟用Tiled做出一张能进引擎的2D游戏地图
【免费下载链接】tiledFlexible level editor项目地址: https://gitcode.com/gh_mirrors/ti/tiled
还在用画图软件一格一格手画关卡,再用代码手写碰撞矩形吗?Tiled 是一个功能灵活的 2D 瓦片地图编辑器(flexible level editor),专为 RPG、平台跳跃这类基于瓦片的 2D 游戏设计。它支持正交、等距、六边形等多种地图朝向,图层、瓦片、对象都能挂自定义属性,导出为引擎通用的 TMX 格式。跟着这篇实操指南走,15 分钟内你会得到一张带碰撞数据和对象信息的可导入地图。
跑通一条完整流程:从新地图到可交付的 TMX
先交代一下这张文章对应的完整工作流,后面每节都在这条线上推进:
- 安装 Tiled,打开主界面
- 新建项目文件和地图文件,挂上瓦片集
- 用印章笔刷画出地形,用对象层标注出生点
- 给阻挡类瓦片画碰撞形状
- 保存为
.tmx,拿到引擎里直接用
你不需要提前会写代码,整个过程中 Tiled 只做两件事:把像素级的绘制变成"选瓦片、盖章",把原本要硬编码的关卡数据变成可视化图层。
安装Tiled并认识主界面布局
按你的系统选一条路即可:
- Windows / macOS:从 GitHub Releases 下载安装包,macOS 版本经 Apple Developer 签名
- Linux:用官方发布的 Flatpak 或 Snap,包管理器的版本通常偏旧
- 开发者:从源码编译,装好 Qt 6 开发库和 Qbs 后执行下面这条命令,它完成工具链检测、构建并启动 Tiled
qbs setup-toolchains --detect # 检测本机工具链 qbs # 构建 Tiled qbs run -p tiled # 直接运行编译产物首次启动是启动窗口,建议先选File -> New -> New Project...建一个项目文件,放在你游戏项目根目录。项目目录会被自动加入 Project 视图,之后所有素材(瓦片集、地图、模板)都能从这里快速访问。
主界面记住三个位置就够了:左侧 Project 视图管文件,中间画布放地图,底部一排是工具栏、Tilesets(瓦片集)视图和 Properties(属性)面板。找不到某个功能时,按Ctrl+Shift+P打开动作搜索,直接输入功能名定位,比翻菜单快得多。
新建一张正交地图并挂上瓦片集
选File -> New -> New Map...(快捷键Ctrl+N)。第一次建图直接取默认值即可:50×15 格、32 像素瓦片、正交(Orthogonal)朝向、有限地图。这些参数之后都能改,不必纠结。
建好地图后,给画布挂上素材。在右侧 Tilesets 视图空白处点Add Tileset...,选New Tileset from Image...,挑一张精灵图(比如仓库自带的示例瓦片图 examples/desert.tsx 引用的那张沙漠图集)。建议把瓦片集存成独立的.tsx外部文件,后面多个地图可以共享它,改一处全部生效。
挂上瓦片集后,再建两个图层,为后面铺地形和标对象做准备:
- 加一个 Tile Layer(瓦片层):右键 Layers 面板选Add Layer -> Add Tile Layer,这是画地面的地方
- 加一个 Object Layer(对象层):同一路径选Add Object Layer,用来放出生点、路径这类引擎要读的数据
用印章笔刷铺地形:画地、擦错、换工具
选中标注好的瓦片层,按B切到印章笔刷(Stamp Brush)。在 Tilesets 视图里点一下某块瓦片,它就进入印章槽;回画布按住鼠标拖拽,瓦片就会连续盖下去。支持画直线和圆圈,印章槽里也可以存多个瓦片,随时切换。
画错了按E拿橡皮擦(Eraser)清掉,或者直接用Ctrl+Z撤销。
如果你的瓦片集是那种"草地要和水自动过渡"的图集,别手动一块块选——Tiled 有 Terrain 工具:先在瓦片集里声明哪些瓦片属于哪种地形,之后笔刷会替你挑对过渡瓦片,还能自动修正相邻瓦片。官方文档里 terrain 一节 有完整的声明步骤,仓库示例 examples/sewer_automap/ 还能展示更激进的自动映射规则。
一个容易混的概念先说清:瓦片集(tileset)是素材库,地图(map)是使用它的现场。给瓦片挂的属性跟着.tsx走,画在画布上的内容跟着.tmx走。后面加碰撞数据时你会直接体会到这个区别。
给阻挡类瓦片加碰撞数据,让引擎知道哪里不能走
平台游戏里最烦的事之一:树、尖刺、悬崖在画面上好看,角色却能穿过去。Tiled 的碰撞编辑器把这件事做成了可视化操作。
在工具栏点Tile Collision Editor,切到瓦片集视图,选中一个瓦片(比如一棵树),在格子里拖出碰撞形状。矩形、多边形、椭圆都能用,多边形还支持凹形,可以精确贴合不规则轮廓。每个形状还能单独挂自定义属性。
注意这些数据写进瓦片集文件而不是地图文件——这是"瓦片集是素材库"这个原则的直接体现。你在碰撞编辑器里改了树的碰撞形状,所有引用了这棵树的地图自动生效,不用一张张翻回去改。
用对象层标出生点与巡逻路径,再挂上自定义属性
地形画完,轮到逻辑数据。选中标注好的对象层,Tiled 提供六种对象:点、矩形、椭圆、多边形、折线、瓦片。最常用的两个场景:
- 在玩家出生位置放一个 Point 对象,命名
PlayerSpawn - 沿 NPC 行走路线画一条 Polyline(折线)对象,命名
PatrolPath
对象不要求对齐瓦片网格,可以自由缩放和旋转。
接下来是 Tiled 相对纯画板类工具的核心优势:Properties 面板。选中任意对象(也可以选中地图、图层、瓦片),在面板里加自定义属性,比如给PlayerSpawn加一个字符串属性world值为farm,给PatrolPath加数值属性speed值为120。类型支持布尔、数值、字符串、颜色、文件引用,引擎导入后按名字读取即可。
对象层除了放"东西",还承担了地图级标注:边界框、相机范围、触发区域,本质上都是放在对象层的形状对象。你策划要什么数据,就定义什么对象,Tiled 不做限制。
保存为TMX:你的地图最终长什么样
回到主地图,Ctrl+S保存。文件后缀是.tmx,本质是 XML,结构可以在 官方格式参考 里查到。两个直接影响工程协作的设置:
- 瓦片层数据可以选压缩编码(base64 + zlib),地图文件能小一个数量级
- 导出其他格式走File -> Export Map As...,Tiled 自带 CSV、JSON、tbin、TMH(Unity)等插件,仓库 src/plugins/ 目录里能看到全部支持的目标格式
第三方引擎格式需要留意:比如直接编辑《星露谷物语》的 tBIN/tIDE 地图需要先在Edit -> Preferences -> Plugins里启用tbin插件,它默认关闭,因为这种格式不支持对象层和外部瓦片集,不是无损的。
踩坑实录:新手最常见的三个卡点
地图打开是空的。多半是相对路径问题:.tmx里记录的瓦片集路径是相对路径,地图和瓦片集的目录层级一动就找不到了。用项目文件统一管理、别乱挪文件夹,能省掉大量排查时间。
改碰撞形状后地图没变化。你改的是瓦片集里的碰撞,需要确认打开的是.tsx视图而不是地图视图;另外检查这块瓦片确实来自那个瓦片集,而不是同图集的另一个实例。
瓦片在引擎里错位或顺序不对。先看两处设置:地图朝向是否一致、渲染顺序(Render Order)是否和引擎的绘制约定匹配。等距地图的渲染顺序对表现影响尤其大。
下一步行动
- 打开示例地图 examples/desert.tmx 练手,对照右侧属性面板,看每个设置对应地图里的什么
- 读 docs/manual/terrain.rst,给你的瓦片集声明一套地形,体验自动过渡
- 需要批量处理地图时,看 docs/manual/scripting.rst 里的 JavaScript 扩展方式,把重复操作写成脚本
【免费下载链接】tiledFlexible level editor项目地址: https://gitcode.com/gh_mirrors/ti/tiled
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考