cocos2d-x大型地图的实现

所谓大型地图,是指类似于pc端沙盒游戏那样的地图。需要加载大量的图片资源。而cocos并不是针对这样的游戏设计(现目前手机端很少有2d的类似游戏)。
笔者最近再开发一款类似《饥荒》的生存类游戏,所以涉及到大型地图的实现,下面来和大家聊一聊我自己的实现方式。

· 首先是底层地图实体的逻辑,要实现物体的碰撞,我使用了方格数组来储存地图的相应信息:

struct MapRect
{
    LandType landType_ = DRY_LAND;
    short int positionX_ = 0;
    short int positionY_ = 0;
};
底层的数据结构要越简单越好,因为要大量的使用.

· 然后是地图上面的实体,在我设计的游戏中有entity和land两种,entity是人为定义的碰撞体积,而land是不规则的图片,我用了像素检测来判断它的边缘,并且存入底层的方格数组中:

class VirtualMap
{
public:
    VirtualMap();
    ~VirtualMap();
public://inlitialize map data
    bool recordData();//将地图数据存入文件
    bool loadData();//from xml;to be done
    bool loadLandIndex();//from Imgs
    bool loadPlantIndex();//from plant.xml
    bool setCache();//set Map sprite cache
public://部分成员部分暴露出来供绘制使用
    //map data
    MapRect _landIndex[401][401];//地图网格的数据
    SimpleArray<Land*, MAX_LAND_NUMBER> _land;
    //entities data
    Vector<Animals*> _ani
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值