
韩国
为什么要做俄罗斯方块?因为它具备动态改变逻辑单元格的能力。学会这个,当家具位置变动后,你就能清楚阻挡信息该怎么做了。家具的阻挡信息总是需要的,比如在(3,3)放了桌子,那会覆盖(3,3)的橱柜就放不了了。那么第一步,你得耐着性子去学习玩俄罗斯方块和仓库番。这就好比武侠小说里练武功是从挑水、扎马步起步的,一上来就练华山剑法的,最后都会被像我这样的反派瞬间打败。那为什么要做火纹?火纹里存在着游戏图里的另一个问题(当然,不一定只是火纹,英雄无敌也有这问题),即火纹系列中有些单位所占格子不止一个,对吧?
在这里,你得学会前面提及的Anchor Grid概念。每个单位逻辑上仅有一个Vector2Int坐标,可实际上它或许占据多格。这多格并非简单地用再创建一个List来表示它的偏移坐标格就能解决的,而是:当确定角色落点时,这些格子不能覆盖到某些格子或者超出棋盘,这是首要解决的问题。所以在判断某样东西能否放进某个格子时,应该判断的是一个坐标加上一个偏移量数组。通常教程里告诉你判断一个坐标能否放置,这其实是完全错误的。第二个更简单些,他作为阻挡者在地图上占据多个单元格,对吧?把Tilebased概念弄清楚后,这就不是特别难理解了。说到这,是不是和你图片中的许多家具相同?

小说
首先要学会坐标轴转换,这是二维数组与坐标系的关系,二者是平行世界关系而非绝对关系。简单来讲,二维数组能储存平面俯视视角,也能转化为其他视角,其本质是数据,所以这就是个坐标到下标的简单转换问题。
接下来就是贴图谁覆盖谁的问题了,在unity里这就是sorting order赋值的问题。要是平面俯视的,像仓库番那种,只要简单地让越下面的格子排序越靠前就行。但要是斜45度的话,就存在谁覆盖谁的问题了,就像你问题图中的那样。
最后还有个非常难的问题,我怎么能知道自己鼠标选中的是哪个家具?你看这图,我鼠标点在红圈里的一些地方,像最左边,这时候是要点灶头还是白板就很难判断了。这是玩皇家骑士团like游戏才会碰到的情况,其实解决起来并不复杂。这个不管用啥引擎都能做,放心去做就好,不过先得学会前面提到的知识和技巧。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号