2d游戏里常见的45度角,建筑物之间相互覆盖渲染问题
但是难免会遇到覆盖不正确的情况
显然后面个建筑错误的覆盖了前面一个建筑。
在建筑物覆盖时不能简单粗暴的两个for循环去按从第一排到最后排,从左到右的顺序去覆盖。针对这种情况,可采用拓扑排序来解决问题
大概思路如下:
1.从第一排到最后一排挨个找建筑物,找到一个建筑物A后,去判断这个建筑物周边被什么元素覆盖
2.建设建筑物A被B、C覆盖,记录A建筑物被B、C覆盖的关系,并且记录A建筑物的度edge为2,。就是说他有指向2个建筑物
3.继续循环找下一个建筑,直到把所有建筑物和建筑物的覆盖关系都找到记录下来
4.从度edge为0的建筑物开始画,是一定会存在度为0的节点的
5.每画一个度为0的建筑,就把覆盖这个建筑物的B、C的记录关系删除,并且把B、C两个建筑物的度减1
6.继续循环找度为0的点又重复上述3-5过程,最终就把所有建筑有序的画出来了。
可参考拓扑排序
参考文献: