前言
最后一篇文章,来把这个坑填完。
接上期:https://zhuanlan.zhihu.com/p/65547739
上期内容中搞定了无限地形的生成和建造功能的实现,现在总算站在了实现最初设想功能的起点上,即让AI按设计图自动建造建筑。
先大致思考一下实现的步骤吧。
首先是设计图的部分。不管是像原版一样是放到背包里的道具还是说在场景中把待处理的方块都显示出来,设计图从本质上来说,都是一个数据的集合。其中存储的是限定范围内的方块数据,而我们要做的事就是以鼠标击中的位置为基点,让这些数据以我们预想的排列方式传递到chunk上。
其次是自动建造的AI。这里的主要难点就是如何在一个不断变化的地形中正确寻路,以及多个AI协同工作的问题。
下面就以这个顺序分别实现以上功能。
另外这期就尽量不贴代码,只说思路。由于代码会在实现过程中反复修改,直接贴的效果也不好,如果大家对实现方式有疑问,可以下载文章末尾的工程。
建造模式预览
上期还留了一个坑忘了写,这期就合并在一起说了,即建造时方块的朝向控制。
之前我们用一个镂空的框来表示当前选中的位置,在删除模式时看起来似乎还行,但在建造模式时是无法显示当前方块的朝向的,因此在建造模式时直接把选中的方块按类型以mesh的方式显示出来,新建一个脚本来处理这个问题。
这个脚本的作用与chunk类似,都是根据数据生成mesh信息,所以这里面也需要对mesh的引用。不同的地方则是它可以旋转朝向,旋转的方式就是用的上一期说的自己写的一个简易四方向矩阵变换。因此方块不是真的自己转向了,而是方块的每个顶点的相对位置变了。
然后材质球就用和chunk一样的,只不过稍微改一下shader,使其显示为半透明。之前找材质贴图的时候特意找了一个能表示方向的,刚好能派上用场。
这还不算完,现在有个问题。朝向不同的方块处于相邻位置时对相邻边的隐藏判断会出错。