Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap

Unity2019使用Isometric Z as Y Tilemap创建2.5D地图

  • (一)创建Tilemap
    • 1.Tilemap的类型
    • 2.新建Isometric Z As Y Tilemap
      • 2.1设置Grid
      • 2.2设置Grid下的Tilemap
    • 3.创建Palette调色板
    • 4.绘制Tilemap地图
  • (二)Unity使用Isometric Z As Y Tilemap创建2.5D地图(二)如何按照正确遮挡顺序渲染图片
  • (三)Unity使用Isometric Z As Y Tilemap创建2.5D地图(三)如何用代码创建Tilemap


Unity官方及网络上有很多关于Tilemap的使用说明文档了,本文主要面向很多像我一样对Unity Tilemap不是很了解的新手,着重说明一些基本的细节问题。

(一)创建Tilemap

1.Tilemap的类型

Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第1张图片
   Tilemap支持普通的Tilemap(矩形)、Hexagonal(六边形)、Isometric(等距)几种主要类型。
Isometric通常就是2D游戏中经常说的2.5D或者斜45度游戏类型,很多经典的2D游戏都是此类型的。下文会使用河洛工作室开发的经典游戏《金庸群侠传》资源进行讲解说明。
   要使用Unity Tilemap创建《金庸群侠传》类型的地图,就需要使用Isometric Z As Y Tilemap类型。

2.新建Isometric Z As Y Tilemap

   首先创建2D目, 通过菜单GameObject > 2D Object > Isometric Z As Y Tilemap 创建新的Tilemap。点击创建后,在场景Hierarchy中会生成Grid对象及Tilemap子对象。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第2张图片

2.1设置Grid

   Grid翻译成中文就是网格,是用于控制Tilemap网格属性的组件。Tilemap是Grid的子对象,也就是Tilemap是要“画”在网格上的。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第3张图片
上图为Grid对象属性面板,有如下四个重要属性:

属性名 默认值 作用描述
Cell Size (1,0.5,1) 表示网格的单元格大小
Cell Gap (0,0,0) 网格单元格之间的间隔大小
Cell Layout Isometric Z As Y Tilemap 网格布局
Cell Swizzle XYZ Unity将根据此选择,将现有XYZ坐标转换为选择的坐标。

   其中Cell Layout为Isometric Z As Y Tilemap是本文要讲解的内容无需调整,Cell Swizzle不需要调整。
我们需要重点关注Grid Cell Size,它的默认值为(1,0.5,1),这个属性需要与我们导入图片资源的Sprite的Pixels Per Unit属性相对应。我相信大家都很了解Sprite了,但在此还是要重点讲解一下。
   我们将图片资源导入到Untiy之后,每个图片会生成一个Sprite,Sprite其他属性就不说了,Pixels Per Unit属性导入Unity后默认为100,其意义是Unity默认该图片每100个像素为1个Unity长度单位。Sprite的Pixels Per Unit值对Camera摄像机、以及我们要说的Grid Cell Size等等属性设置都是有影响的。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第4张图片
   上面我们创建的Grid Cell Size默认值为(1,0.5,1),表示网格的宽度为1个Unity单位,宽为0.5个Unity单位。如果你所用到图片资源的宽度、高度都是固定大小,比如72*36等,使用Unity单位长度便于理解和管理资源。比如将导入的Sprite的Pixels Per Unit属性统一设置为72,则(1,0.5,1)表示宽72像素、高72 * 0.5 = 36个像素。
   但像本文使用的图片资源的宽、高是不固定的,所以像上面那样使用,会造成计算后的像素出现偏差,这对大图片还好一些,对于像素类小图片影响就会比较大。
   所以本文将导入的图片资源Pixels Per Unit属性统一设置为1。这样在Unity中就可以使用实际像素大小进行计算。所以在此将Grid Cell Size值修改为(72,36,1),72代表网格的宽度、36为网格的高度。

2.2设置Grid下的Tilemap

   Grid下的Tilemap是我们实际要“画”Tile的对象层。可以根据需要在Grid下创建多层Tilemap用来作为地面层、建筑层、空中层、碰撞层等等。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第5张图片
   这里重点说明两个属性:

  1. TIle Anchor
    TIle Anchor是后面需要用到的Tile的锚点。与之对应的是图片Sprite的Pivot属性。可以看到Sprite默认Pivot值是Center,也就是图片中心位置。
    Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第6张图片
    可以根据实际需要去设置Pivot值,本文中将Sprite的Pivot统一设置为Bottom,可以看到下图,设置后Pivot在图片的底部中间位置。
    Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第7张图片
    TIle Anchor的值根据图片Sprite的Pivot值进行调整,后文创建调色板Palette时候还会说明。
  2. Mode
    Tilemap RendererMode属性需要修改为Individual,否则后面Tile之间遮挡顺序显示会问题。

3.创建Palette调色板

   Pallette的作用是生成并存放后续用来画地图的TIle(“瓦片”)的集合。
   通过菜单 Window > 2D >Tile Palette 创建Pallette调色板。点击Create New Palette新建Palette,将Grid设置为Isometric Z As Y,Cell Size设置为Manual(x=76,y=36,z=1),此处与上文中Grid网格大小相同。

Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第8张图片
   将图片拖入到Tile Palette面板中生成Tile,可以看到由于此前我将Sprite的Pivot设置为Bottom,但没有修改Tilemap的Tile Anchor属性默认值(0.5,0.5,0),所以图片显示位置是偏移的。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第9张图片
   将Tilemap的Tile Anchor属性默认值修改为(0,0,0)后,下图Tile在中Tilemap中显示已经正常了,但Palette中Tile的显示还是偏移的。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第10张图片
   所以我们要在Assets目录中找到刚刚创建的Ground文件双击打开,选择Layer1 (Layer1为Palette的默认Tilemap层),将Tile Anchor属性调整为(0,0,0)。我们看到调整后,Palette中的Tile图片显示也正常了。
Unity使用Isometric Z As Y Tilemap创建2.5D地图(一)如何创建Tilemap_第11张图片

4.绘制Tilemap地图

   完成以上步骤后,我们就可以选择相应的Tilemap进行地图绘制了,具体方式网上有很多,这里不再赘述。
下一篇文章将会讲地图Tile瓦片之间如何正确处理遮挡关系、地图与非地图物体如角色之间如何正确处理遮挡关系。

(二)Unity使用Isometric Z As Y Tilemap创建2.5D地图(二)如何按照正确遮挡顺序渲染图片

   文章链接: 《Unity使用Isometric Z As Y Tilemap创建2.5D地图(二)如何按照正确遮挡顺序渲染图片》

(三)Unity使用Isometric Z As Y Tilemap创建2.5D地图(三)如何用代码创建Tilemap

   文章链接: 《Unity使用Isometric Z As Y Tilemap创建2.5D地图(三)如何用代码创建Tilemap》

你可能感兴趣的:(Unity2019)