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

本文介绍2D游戏地图渲染图层顺序的实现,包括基础准备、程序设计思路和主要代码实现。通过定义结构体表示建筑物及其覆盖关系,使用拓扑排序解决覆盖问题,确保建筑物按正确顺序渲染。同时,文中提及了代码优化和未来可能遇到的扩展问题,如角色移动的覆盖处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇 2d游戏地图渲染图层顺序

讲了大概的思路,下面我们来看看具体的代码。

1.基础准备

1.1.提供一个结构体用于存放建筑物指针和建筑物的度edge

struct BUILDING_EDGE{
    CityNodes cityNode;
    int edge = 0;
};

1.2.提供一个结构体用于表达建筑物覆盖关系

struct NODE_FROM_TO {
    CityNodes fromNode;
    CityNodes toNode;
};

表示fromNode 覆盖 toNode

1.3.提供一个map用于存放建筑物ID和他的度edge

map<int, BUILDING_EDGE> buildingEdge;

1.4.提供一个list用于记录建筑物覆盖关系

list<NODE_FROM_TO> nodeList;

1.5提供一个queue用于存储需要输出的渲染的建筑物顺序

queue<CityNodes> drawQueue;

2.程序设计思路

2.1画建筑物原则

城市节点需要记录x,y坐标上节点是否可用

如果鼠标移动到x,y坐标上该节点为可用状态,并且我们需要画的建筑物A,假设A占地空间为2*2个格子,即当前(x,y) (x,y-1) (x+1,y) (x+1,y-1)格子均要可以使用才能安放建筑物

2.2 FindNodeEdge方法去找到每个建筑物的度edge

假设下图AB两个建筑物,经过大量的建筑物遮挡图片发现

建筑物主体高度不超过一个格,即B建筑物对A建筑物的遮盖可以看做是(x,y+1)位置是否存在建筑物。以及如下图黄色圈圈处都需判断是否存在建筑物。如果存在建筑物,那么这些建筑物就应该对本建筑物造成遮盖。即表达为fromNode

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值