2d游戏地图渲染图层顺序(1)

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过程,最终就把所有建筑有序的画出来了。

可参考拓扑排序

参考文献:

https://blog.csdn.net/qq_24028753/article/details/77692447

 这一篇对我帮助很大 https://www.cnblogs.com/zhrong/p/5844772.html

猜你喜欢

转载自blog.csdn.net/chduguxue/article/details/82976200