cocos2d-x+box2d+tiled 制作无规则碰撞地图(同发泰然)

本文介绍了如何使用cocos2d-x结合box2d和tiled来创建带有无规则碰撞的地图。首先在tiled中创建对象层并绘制多边形或折线,然后修改CCTMXXMLParser.cpp引擎代码以支持polyline和polygon元素。通过解析tmx文件,利用c++的字符串处理方法存储和处理碰撞数据。
摘要由CSDN通过智能技术生成
问题内容:1  利用 tiled 对象层 绘制碰撞的边界 
                  2 通过 cocos2d-x "CCTMXTiledMap" 的对象 读取地图中的点信息 
                  3 通过读出的信息绘制 box2d “b2EdgeShape” 刚体 

问题解决:
                  引擎版本:cocos2d2.1beta3 + box2d 2.2.1 

                  一 关于tiled

                     1.1 创建对象层

                    点击历史上面的带星号按键 有添加对象层选项 点击创建 创建好后 图层中会显示对象层 

                     1.2 多边形与折线  

                  创建好对象层后 选择 此时上面折线选项可以应用  选择选项绘制不规则线 例如: 

                     1.3 tmx文件内容  

                    保存绘制完成的地图后 记事本打开tmx文件看代码 


                           objectgroup部分为对象层内容   name为对象层名字(最好是英文,中文可能会出现问题)
                           object部分为所需要的内容 其中X,Y 表示绘制的不规则图形的起点位置 ployline 为以起点为初始点 连续绘制的坐标点值

                      以上为地图所需要内容

                      二 引擎部分修改 使之能够完成地图内容的读取
                     2.1 读取方式可以有两种 

                           一是 利用cocos2d-x所提供的接口  CCTMXTiledMap 读取  (下文详解)
                            二是 利用xml解析器 TinyXml读取 (此部分略过 有兴趣的话可以自己尝试下)

                     2.2  修改引擎                         

                          其中CCTMXTiledMap 不支持读取polyline 需要修改引擎代码  CCTMXXMLPaerser.cpp     中CCTMXMapInfo::startElement函数 下部 有elementName == "polyline" / elementName == "polygon" 代码块 内容被隐藏掉 需要修改其中内容 如下:

 然                    后重新生成cocos2d-x项目 将生成好的.lib .dll拷到自己的项目中

                   
                   以上为引擎部分修改


             
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值