目录

1 TileMap概念

主要思想

优点

创建的层级

2 Unity中的TileMap

2.1 自动父级Grid 网格

2.2 Sprite精灵

2.3 Tile 瓦片

2.4 Tile Palette 调色板

2.5 Brush 笔刷

3 Tilemap Renderer 瓦片地图渲染器

3.1 Sort Order 瓦片排列顺序

3.2 Mode 渲染模式

Chunk 分块渲染

Individual 单独渲染

3.3 Detect Chunk Culling Bounds 如何检测边界

3.4 Mask Interaction 遮罩

3.5 Material 材质

4 瓦片地图的创建流程

4.1 创建Sprite&Tile

4.2 创建Tilemap&Tile Palette

4.3 可以开始绘制瓦片地图

4.4 问题处理:Grid有缝隙


1 TileMap概念

Tilemap就是被用来创造2D游戏世界地图的,常见的侧视、俯视、斜45度视角的2D游戏地图绘制都可以用它来实现。

主要思想

将游戏世界的每一种地形绘制成单独的整块,例如RubyAdventure项目资源中就提供了不同地形可以用来生成Tile的精灵:

正方形菱形或者六边形三者之一作为每一块的形状把整块分隔开,再像瓦片/瓷砖一样拼接起来。关于具体是如何分割的,后续会进行介绍。

优点

提高了美术资源的重用性,而且用这样一个工具可以大大简化地图绘制的工作量。

创建的层级

一般在一个2D游戏项目中,Tilemap创建会分成三个层次

  • background——地图背景
  • bound——边界
  • foreground——前景,主要是地形

2 Unity中的TileMap

Unity中TileMap是作为一个游戏对象被使用的,用以储存和处理Tile Assets,它更像是一个系统,将Tiles传输到其他相关的组件中。

Unity中的TileMap由五个部分组成:

2.1 自动父级Grid 网格

创建一个Tilemap:

GameObject -> 2D Object ->Tilemap选择类型

当我们按照这个路径创建一个瓦片地图时,Unity会自动创建一个当前瓦片地图对象的父级对象(默认名称叫Grid),这个Grid就相当于一个个相连网格的合集,每个网格会存放一个Tile,Grid的Cell Size等属性可以改变网格的尺寸。

2.2 Sprite精灵

在【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer介绍了什么是精灵,它其实就是一个2D的Texture容器。

2.3 Tile 瓦片

瓦片包含一个精灵以及两个组件。创建方法:

Project窗口 -> Create -> 2D -> Tiles选择类型

新建的Tile需要给它一个精灵,也就是给它一个纹理。Select中选择精灵即可。还可以改变它的碰撞体类型,默认是Sprite精灵。

2.4 Tile Palette 调色板

可以快速地进行瓦片地图的绘制,创建方式有两个:

第一,从Project面板创建

Project窗口 -> Create -> 2D -> Tile Palette选择类型

第二,创建了Tilemap后,从Scene打开Palette窗口面板创建

二者都需要选择存储的文件路径。

2.5 Brush 笔刷

调色板中用以绘制瓦片地图的工具。

3 Tilemap Renderer 瓦片地图渲染器

它是Tile Map游戏对象中的一个部分,跟精灵渲染器之于精灵一样,它也用来控制当前Tile在Tilemap上的渲染,有以下属性.

3.1 Sort Order 瓦片排列顺序

这个很简单,就是规定每个Tile在整个Tilemap上的排列顺序。通过图层顺序体现前后关系。

3.2 Mode 渲染模式

渲染模式有两种

Chunk 分块渲染

使用分块模式进行批量渲染,这也是默认的渲染方式,选择Chunk后渲染器会按位置将瓦片进行分组,将瓦片上的精灵一起批处理渲染,可以在瓦片地图中获得最佳渲染性能。

Individual 单独渲染

单独渲染每个瓦片并考虑位置和排序顺序。

3.3 Detect Chunk Culling Bounds 如何检测边界

有两个值,Auto和Manual,自动和手动。默认是自动监测。此时渲染器会自动检查使用的精灵。当选择Manual时需要输入提出边界拓展的值。

3.4 Mask Interaction 遮罩

这里跟精灵渲染器的类似,就不赘述,用到了就知道是什么作用了。

3.5 Material 材质

定义用于渲染精灵纹理的材质。

剩下的就是图层关系了,不赘述。

4 瓦片地图的创建流程

4.1 创建Sprite&Tile

首先需要有个想要成为瓦片地图元素的瓦片Tile,还需要精灵作为纹理,因此通常会传入一个2D图片作为精灵。

例如RubyAdventure官方教程中就给出了一个PNG纹理素材,导入并将Type改为Sprite

下面是创建Tile,按照2.3中的创建思路创建一个Rule Tile基础瓦片,命名为BrickTile,并把刚才创建的精灵赋给他。

4.2 创建Tilemap&Tile Palette

GameObject -> 2D Object ->Tilemap创建Rectangular类型的瓦片地图,同时自动创建了父级Grid。

点开Palette Window,新建一个Palette命名为GamePalette,并将之前创建的Tile拖进去。

4.3 可以开始绘制瓦片地图

4.4 问题处理:Grid有缝隙

如下,瓦片没有填充满整个Grid

更改Tilemap精灵的像素大小,更改成64即可。

修改后的结果:

这是初始创建瓦片地图的方法,但对于一般项目而言,提供的会是多个瓦片的集合,02部分会介绍关于Tile的其他方面的内容。

【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01相关推荐

  1. 【Unity入门计划】制作RubyAdventure03-使用碰撞体触发器实现世界交互

    目录 8 添加生命系统 演示效果 9 使用触发器实现吃血包 9.1 添加一个可以被吃掉的血包 10 使用触发器添加伤害区域 10.1 设置伤害区域 10.2 设置无敌时间 关于无敌时间的讨论 10.3 ...

  2. 【Unity入门计划】界面介绍(1)-Scene视图

    目录 正式记录前的废话 Unity的坐标系 2D/3D视图转换 视图的移动.旋转.缩放 移动 旋转 缩放 选中游戏对象Game Object 单选 多选 设置不允许选中 场景可见性 游戏对象的移动.变 ...

  3. Unity2D瓦片地图tilemap出现瓦片间间隙问题解决

    项目场景: Unity瓦片地图还是挺好用的,不过存在瓦片间间隙的问题 问题描述: 就比如这张图里方块间的蓝色线条,看着很是烦人. 原因分析: 肯定是有unity设置抗锯齿的问题,还有其他问题,就不太清 ...

  4. 【Unity入门计划】基本概念(4)-预制件 Prefab

    目录 官方文档 相关教程 我的Unity版本 1 预制件的作用 2 预制件的定义 3 预制件的优点 4 一般使用的场景 5 预制件的创建&使用 5.1 创建 5.2 使用 6 预制件的编辑 6 ...

  5. 【Unity入门计划】基本概念(1)-2D刚体Rigidbody 2D

    目录 官方参考文档 我的Unity版本 Rigidbody刚体的作用 Rigidbody 2D的添加 Rigidbody的面板属性 Body Type 刚体类型 Body Type -> Dyn ...

  6. 【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer

    目录 官方文档 1 Sprite 精灵 2 Sprite Renderer 精灵渲染器 2.1 Sprite 精灵 2.2 Color 着色 2.3 Filp 翻转 2.4 Draw Mode 当前的 ...

  7. 【Unity入门计划】playground项目:2D飞船移动小游戏

    目录 跟学的Unity教程 我的Unity版本 1 导入playground项目资源 2 创建新场景 3 创建玩家飞船 3.1 调整大小位置 3.2 调整Game视图的背景 3.3 Inspector ...

  8. 【Unity入门计划】Unity2D动画(2)-脚本与混合树实现玩家角色动画过渡

    目录 1 玩家角色移动伴随的简单动画 1.1 行走 1.2 停留 1.3 攻击敌人(触发型) 1.4 受伤(触发型) 1.5 跳跃 1.6 下蹲 2 动画间的过渡 3 过渡的判断逻辑 3.1 行走与停 ...

  9. 【Unity入门计划】CreatorKitFPS:第一人称射击3D小游戏

    目录 Unity学习教程 1 添加并载入项目资源 添加项目资源 载入到Unity 2 载入Scene 3 从预制体添加射击Targets 4 管理游戏对象 4.1创建分组关系 4.2 区分相对坐标&a ...

最新文章

  1. linux下confstr与uname函数_获取C库与内核信息
  2. ecshop php升级,升级-安装与升级- ECShop帮助
  3. kafka:topic为什么要进行分区?副本机制是如何做的?
  4. sap gui mac下载_SAP|叮咚,您有一份来自SAP的邀请,请签收
  5. SD 模拟sip 读写子程序
  6. 由0.1+0.2-0.3不等于0说起
  7. IDea更改主题和部分修改主题方法
  8. 【Android取证篇】华为手机OTG备份密码重置教程
  9. python开发环境android版_Android NDK开发环境安装(OK版)
  10. 读书笔记—CLR via C#章节4-7
  11. 川土新品 | CA-IS3105W 全集成隔离 DC-DC 转换器
  12. ZigBee学习之11——MAC层API解读2
  13. python与人工智能有关系吗_Python与人工智能到底有什么关系呢?Python学习
  14. 南开大学计算机博士好毕业不,南开一半博士生不能当年毕业(转载)
  15. 触屏型测控电路:串口助手网络ping包 带笔划输入法 硬件终结版
  16. 查看windows日志
  17. MathCAD Prime 8.0数学工具的安装与使用配置
  18. 思科dhcp服务器动态获取ip地址
  19. Til the Cows Come Home-poj2387(dijkstra判断重边)
  20. 《灌篮高手》搞笑台词

热门文章

  1. 使用matlab求高阶累积量
  2. 吃货,你敢在晚上看这本书吗?
  3. 如何根据pom文件创建自己的本地仓库
  4. 浅谈电话机器人与人工坐席的优劣势
  5. 程序员进阶架构师、技术总监、CTO,需要掌握哪些核心技能
  6. 两层板(双面板)如何控制50欧特性阻抗
  7. Java实现微信公众号每日推送
  8. 十二个“一”的演义小故事
  9. java程序员常用的快捷键
  10. 【安全资讯】incaseformat蠕虫病毒大爆发!20s删除用户文件