Unity个人笔记(一):用Tilemap绘制2D地图

  在寒假期间,学了一些unity2D皮毛,找一些重要的整理一下。我个人的项目是类似于宝可梦式的回合制战斗冒险类,并非2D横版游戏。所以代码与2D横版游戏有些许不同。
  Unity版本为2019.4.20f1c1
(兴趣使然,半路出家。代码混乱,逻辑不通。大佬轻喷)

一、利用Tilemap构建地图(包含Rule Tile的使用)

  一个游戏最为基础的是关于游戏场景的搭建。unity吸收了RPGMaker的传统功能,也就是利用瓦片来构建地图。Tilemap本身其实没什么好讲的,就简单讲几点。

1、素材选择

  首先需要注意的点是素材。因为unity的这一功能借鉴了RPGMaker,所以RPGMaker的场景素材是可以直接在unity中使用的,不一定要去特别去找unity的专用素材。目前常见的素材大概都是这样的:

Unity个人笔记(一):用Tilemap绘制2D地图_第1张图片

2、图片格式更改

如下图所示:
Unity个人笔记(一):用Tilemap绘制2D地图_第2张图片
  其中修改中最重要的是将Sprite Mode改成Multiple,剩下两个视素材本身质量以及电脑能力决定。设置完Multiple之后记得Apply,然后打开Sprite Editor就可以切分瓦片:

Unity个人笔记(一):用Tilemap绘制2D地图_第3张图片
  Type我只用过两种:Automatic 和 Grid by Cell Size, 第一个是自动另一个是按瓦片大小切割,按照瓦片大小切割中会多出来一栏Pixel Size设定一个瓦片的长和宽,多试几次基本上就能找到适合的大小了。然后再Apply就可以关闭了,基本的图片设置就结束了。

P.S. 可以给部分Sprite的Name重新命名以便后来使用的时候更容易找

3、绘制地图

如图所示打开Tile Palette:

Unity个人笔记(一):用Tilemap绘制2D地图_第4张图片
  在红线上方应该是Create New Palette,点击就可以建立一个新画板。这里建议新建一个文件夹存放画板。
  然后直接将之前设置好的素材拖入画板中就可以了。这里依旧建议给瓦片(Tile)另建一个文件夹存放。(除非你比较喜欢从瓦片海中找非瓦片素材……)
  之后便是在Hierarchy窗口中右键 — 2D Object — Tilemap新建一个地图,点击Grid里面的Tilemap后,在Palette窗口中选择你需要使用的瓦片就可以做地图了。窗口上的7个工具的用途如果不清楚可以尝试一下,然后Ctrl + z撤销就可以了。

P.S. 多个Tilemap可以先点击Grid然后右键建立,方便管理。多个Tilemap可以用来对不同属性的瓦片进行管理,而且方便修改。不过记得要修改一下各个Tilemap Tilemap Renderer属性中的Sorting Layer(渲染层级)Order in Layer(层内顺序),其中Sorting Layer层间的遮挡顺序,新建的层会遮盖原来的层;Order in Layer层内的遮挡顺序,数字大的会遮盖数字小的。

*4、Rule Tile的使用(需要挂载插件2d-extras)

  插件安装方法放在了后面的补充,可以考虑先拉到最后。
  Rule Tile是我感觉unity创建的比较新颖的东西,当然了我之前只用过一点RPGMakerXP和橙光,所以这个新颖是于我而言。。。
  Rule Tile是一种通过设立某种规则,使得我们可以只在画板上选取Rule Tile这一个瓦片,来实现一些之前需要多种瓦片共同搭建的地形。
  举个简单的例子,如果我想做一个花园的地图,我要做一条小路,还有草坪,草坪上还要随机的有一些鲜花点缀。你就至少需要草的瓦片,鲜花的瓦片。画一条小路所需要的瓦片就更多了,转弯用的瓦片,与草相连接时使用的瓦片等等,而且需要修改时也会十分的麻烦。然而如果使用规则瓦片(没看中文文档,直译的),我们只需要两个瓦片就足够了:一个用来画草坪和花的草坪规则瓦片和路规则瓦片。
  就个人实践结果来看,草地,路面,以及房间地板诸如此类的基础地形比较合适。
  在Project窗口中右键 — Create — 2D — Tiles — Rule Tile即可建立一个Rule Tile.
Unity个人笔记(一):用Tilemap绘制2D地图_第5张图片
  Default Sprite是指在没有规则限定时的默认填充的瓦片的样式。尽量选择较为基本的瓦片。
  在Tiling Rules中,九宫格是Rule Tile的核心所在。中间的灰点是你在右侧select的瓦片A所在的地方,周围的八个格子代表着它附近的瓦片。
  点击格子一次绿箭头,代表着瓦片A旁边那个位置必须有这个规则瓦片。
  点击格子两次红叉,代表着该位置不能出现这个规则瓦片。
  点击格子三次就清空了,说明这个位置对瓦片A呈现什么样子没有影响。
  下面我们看到Output一共有三种情况,我通过下面的表格来说明一下:

Output 注释 示例
Single 最基础的,象征只输出一种图像 道路左转时内侧的瓦片
Random 意味着这一个Tile会随机从个数为Size的图片中选择一个作为瓦片的图案 随机有鲜花的草坪
Animation 该瓦片会重复播放所选的按Speed的速度播放的Size张图片 流动的瀑布

  在设置完之后从Project将这个Rule Tile拖到Tile Palette上就可以用它来作画了。

P.S. 这里萌新有一点疑问,像栅栏或者铁轨这样宽度只有一个方块的是否能用Rule Tile来做? 我尝试了一下发现如果单独将这些东西分离成一个Sorting Layer,不与其他的Tile交叉勉强可以,但是我想尽量减少Sorting Layer的数量,比如我想让栅栏和房屋在同一渲染层级

5、添加碰撞体

  这里就是我在2中的P.S.中为什么写了那么长关于多个Tilemap的相关问题的原因。不是所有瓦片都需要碰撞体,我一般将相同物理属性的元素放在一个渲染层(Sorting Layer),这样方便集体处理。
Unity个人笔记(一):用Tilemap绘制2D地图_第6张图片
  先点击Add Component在搜索框中搜索Tilemap Collider 2D,选择添加之后一般这个时候会附带一个Rigidbody 2D,注意其中的Body Type,默认为Dynamic,是能被主角推走的那种,如果是作为背景使用推荐直接改为Static,如果继续使用Dynamic记得将的重力Gravity Scale改为0(不然测试时会直接下落)
  如果此时看Scene窗口,就能看见一个又一个绿色的正方形碰撞体,相邻的同层级的碰撞体可以通过Composite Collider 2D整合为一个。同样先Add Component然后搜索Composite Collider 2D,添加上之后点击Tilemap Collider 2DUsed By Composite后的方框,这样就能将碰撞体合并。


  经过这五步之后,基本上就可以使用Tilemap粗略的绘制地图了。
  本来觉得能很快写完的结果不知不觉才写完了Tilemap。。。下一次笔记打算把我目前所学的地图篇结束,然后就是讲人物的移动,动画。动画部分我打算只讲混合树(Blend Tree),因为那个会了普通的比它还要简单。不知道什么时候有空,随缘更吧。

补充:2d-extras安装方法

方法有很多,这里推荐一个对网要求比较低的。
点击这里(有时能直接连上),进入如图所示页面:
Unity个人笔记(一):用Tilemap绘制2D地图_第7张图片
点击master右边的倒三角选择适合于自己的版本,再点击Code右边的倒三角选择Download ZIP.将下载下来的压缩包解压,解压出来的文件夹直接放到你的项目文件夹中Asset文件夹里面并重启Unity,在Project中右键 — Create — 2D中如果有Tiles,就说明安装成功。

你可能感兴趣的:(游戏,游戏开发,unity)