猿创征文|Unity开发实战—— 2D项目1 - Ruby‘s Adventure 游戏地图绘制(2-1)

Posted 杨枝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猿创征文|Unity开发实战—— 2D项目1 - Ruby‘s Adventure 游戏地图绘制(2-1)相关的知识,希望对你有一定的参考价值。

文章目录

1)使用指南

①前言
本项目的完整开发流程在Unity官方项目的教学文档中编写了详细的教程文档,但是因为官方文档距离现在已经有一段时间了,个别地方有错误或者读者在使用自己机器上的Unity 编辑器进行操作的过程中,仍然遇到了零零散散的问题,无法再和官方教程相对应,本博客是对官网提供的项目的再补充以及个人心得复盘和经验分享。

本系列博客是来源于官方教程但是最终绝对会高于官方教程,让读者综合官方教程以及我自己的升华,能够独立开发出一个比官方教程更加完整可行的游戏。
最终的开发结果,使用资源也会开源在GitHub以及Gitee。

本系列博客是来源于官方教程但是最终绝对会高于官方教程,让读者综合官方教程以及我自己的升华,能够独立开发出一个比官方教程更加完整可行的游戏。
最终的开发结果,使用资源也会开源在GitHub以及Gitee。

②官方教程
官方文档 —— 4、世界设计 - 瓦片地图
官方文档 —— 5、装饰世界

③如何处理本系列博客和官方教程之间的关系

个人建议是先大致浏览本系列专栏的博客,对注意事项和要点有个初步印象,再跟着官方文档逐步操作

因为本系列博客是对官方教程的修订,补充,升华,而且本系列博客的内容篇幅不会特别冗长,完整看完大概需要5 — 7 分钟。
假如只看文章的目录,留意需要订正的地方,那么大致只是需要1分钟左右。

2)具体步骤详细剖析

前排温馨提示:官方教程 —— 4、世界设计 -瓦片地图的教程中,除了第二步创建瓦片地图和第三步创建新瓦片需要更新操作。

其他可以完完整整按照官方教程做,官方教程的教学逻辑十分清晰。

2.1)《4-2.创建瓦片地图》操作更新

官网教程文档中给出的内容是2020.3以前的 Unity 编辑器在创建瓦片地图时候显示的页面了。可能很多使用最新版编辑器的小伙伴看了文档会觉得迷糊,大有劝退的味道。

官方教程操作图:


现在可以跟着我的步伐,重新认识在2020.3版本以后的Unity 编辑器怎么创建一个瓦片地图吧。

修正后的操作图:

创建的结果是和教程中所述一致,这里可以顺带认识一个用于规则和管理瓦片地图的Gird 对象,以及在Gird 范围内绘制游戏地图的Tilemap 对象


拓展延伸

① Rectangler 矩形瓦片地图
在曾经的Unity编辑器中,据说创建瓦片地图是默认选择的Rectangular矩形的瓦片地图
② Hexagonal 六边形瓦片地图
至于Hexagonal - Pointed - TopHexagonal - Flat- Top 分别是六边形瓦片地图点朝上六边形瓦片地图边朝上。六角形瓦片通常用于战略类桌面游戏

③ Isometric 等距瓦片地图:
等距透视图显示所有三个 X、Y 和 Z 轴,因此可以将伪深度和高度添加到瓦片地图。
等距瓦片地图常用于策略类游戏,因为等距透视图允许模拟 3D 游戏元素,例如不同的海拔和视线。这样可使玩家在游戏过程中做出关于移动和定位的战术决策。
知乎中上海熊魂网络科技公司的一篇关于等距视角的文章写得很不错,可以参考参考。
【Unity】使用 Tilemap 创建等距视角 (Isometric) 的 2D 环境

2.2)《4-3.创建新瓦片》操作更新

瓦片地图已经创建好了,那么此时需要的就是填充地图的瓦片了。咱们先系统的认识一下什么是瓦片吧。

瓦片是排列在瓦片地图上的资源,用于构建 2D 环境。每个瓦片引用一个选定的精灵,然后在瓦片地图网格上的瓦片位置处渲染该精灵。

Tile2020.3以后的版本已经看不到,至于使用,暂时没有搞定
Scriptable Tile自编程瓦片
Rule Tile规则瓦片,即可以自己定义瓦片的生成规则
Animated Tile动画瓦片

因为2020.3以后的版本,就不直接提供Tile来使用,因此《3.创建新瓦片》的第四步中提供的图示需要更新。更新的思想是使用不挂接任何规格的规则瓦片代替普通瓦片。

具体操作可以跟着下图进行:

倘若在2D目录中没有Tiles目录,可以参考这篇文章进行解决:
【琐琐碎碎小知识】 关于部分Unity编辑器在创建瓦片地图时缺乏Tiles选项

小建议:在Tiles文件夹下建议放三个文件夹

① DefaultTiles 存放只是将瓦片集切割但是没有添加任何生成规则的瓦片,此处会在后续为Tilemap添加碰撞体时候会使用。

② Palettes 存放 GamePalette 画板

③ RuleTiles 存放设定好生成规则的规则瓦片

2.3)《5-2.如何才能解决排序问题?》操作注意

这个操作的主要目的是塑造出伪透视的感觉。也就是根据直觉,角色在立方体前面时首先绘制角色,而角色在立方体后面时先绘制立方体。
倘若不调整排序来营造伪透视的感觉,就会出现类似下图的情况,看起来就不太符合实际生活呢。

具体的营造伪透视的方法在从步骤3开始到步骤6结束,都是在讲述这个问题的解决。

通过调整精灵控制排序的Sprite Sort Point 字段为按照轴心Pivot排序,再通过Pivot字段调整具体精灵的轴心到底部Bottom。最后就可以实现下图的伪透视效果。

假如对于每个游戏物体都需要这种制作,那么开发效率就很慢了,为了方便我们偷懒 ,为了方便我们开发,我们将刚在设置完成的这颗树制作为预制件,就可以一次设置,多次使用了,实现一劳永逸。

2.3)《5-7.什么是预制件?》操作积累

制作预制件的操作比较简单,只是提醒积累,因为十分十分使用…
一次制作,多次CV

3)创建地图操作拓展

3.1) 规则瓦片使用的前言

按照教程中的做法,确实可以创建各式各样的瓦片地图,但是大家有没有发展,这种做法有点像每一块地砖都需要我们自己亲手去铺,假如游戏的地图十分庞大,那么工作量其实有点恐怖的。

Unity其实支持用代码编写自己需要的Tile类的,也就是上面表格中的Scriptable Tile 自编程瓦片
比如将一块瓦片,自定义为能够将上下左右20个单位的网格填充为瓦片,同理其实Unity 也支持创建自己的 Brush 类,设计适合自己游戏的网格画笔。

但是对于咱现阶段的水平而言,有点吃力,Unity比较人性的地方在于它还为能力较为匮乏的我们提供了图形化编程的方式来满足我们规定某块瓦片上下左右生成其他瓦片的规则。

3.2) 规则瓦片的使用

本次先涉足规则瓦片的基础用法,规则瓦片的规则定义会依照瓦片集中瓦片的生成规则进行。
比如瓦片集中左上角的瓦片,它的下方和右方才会有瓦片,那么定义规则的时候,也就顺应瓦片集中的情况。

① 创建指定文件夹放置规则瓦片
比如我在负责放置瓦片资源的Tiles文件夹下再创建一个RuleTiles文件夹,专门用于存储我定义的规则瓦片。

② 创建规则瓦片,命名为RuleTile1吧

③ 点击RuleTiles1,操纵用于添加规则的Tiling Rules

④ 根据某块瓦片精灵在瓦片集中的实际情况,定义其四周出现的瓦片的逻辑
注意select 中需要选择瓦片集经过拆分之后的瓦片精灵

⑤ 指定每块瓦片精灵的逻辑

⑥ 将定义完成的RuleTile1拖进Pallate中

想看原汁原味文档的小伙伴,可以看看官方提供的教程:
Using Rule Tiles

3.3) 规则覆盖瓦片的使用

可能有小伙伴感觉解锁了新大陆,已经迫不急的想处理其他五个瓦片集了。人都是想用最少的时间做最少的事儿,那么,这个Unity 编辑器确实可以满足我们…

规则覆盖瓦片在Unity 编辑器中提供了两种选择。


Rule Override Tile

Rule Override Tile会完整的复制提供的原始的Rule Tile的规则。
但是经过覆盖之后,是无法修改自己的规则,比如我突发奇想想要瓦片集的左上角的那块瓦片设置为不能通过的状态,此时就无法进行调整

1、创建Rule Override Tile —— 和创建Rule Tile 类似

2、在Tile加入想要复制规则的Rule Tile

3、在Tile加入想要复制规则的瓦片集精灵


4、在Tile Palette加入制作好的规则瓦片

Advanced Rule Override Tile

Advanced Rule Override Tile 不仅可以完整的复制,还可以自行进行修改,太贴心了。

1、创建Advanced Rule Override Tile —— 和创建Rule Tile 类似
2、在Tile加入想要复制规则的Rule Tile

3、在Tile加入想要复制规则的瓦片集精灵

其实也不一定需要完完整整的按照瓦片集进行自定义规则,也可以玩拼接~
其余内容完完整整按照官方教程中的执行吧

4)总结

① 创建瓦片地图和创建瓦片(瓦片地图 - 步骤2至步骤6)
② 规则瓦片的创建、生成规则的定义
③ 规则覆盖瓦片使用逻辑的理解
④ 伪透视的需要依赖更改图形设置和调整精灵轴心(装饰世界 - 步骤2至步骤6 )
⑤ 轴心的调整以及轴心作用的理解
⑥ 预制件的制作(装饰世界 - 步骤7至步骤9 )

游戏地图的制作可能会占据整个游戏项目50% ~ 60% 的工作量,在2D游戏中,灵活的使用规则瓦片就十分重要了。但是现在先基本掌握如何绘制可以了,至于整个游戏的大致地图,建议在下一节中学习了碰撞体之后再系统的绘制。

以上是关于猿创征文|Unity开发实战—— 2D项目1 - Ruby‘s Adventure 游戏地图绘制(2-1)的主要内容,如果未能解决你的问题,请参考以下文章

猿创征文Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建

猿创征文|Python-sklearn机器学习快速入门:你的第一个机器学习实战项目

猿创征文| Unity进阶InputSystem

猿创征文 | 国产数据库实战之使用Docker部署TiDB集群

猿创征文 | 国产数据库实战之使用Docker部署TiDB集群

猿创征文 | 国产数据实战之docker部署MyWebSQL数据库管理工具