Cocos2d-x 3.0的新物理系统我就不必多说了,接触一段时间,感觉还是不错的。对于那些基本概念,网上的教程已经泛滥了,就不多说了,不过对于创建多边形物体的教程,还真不多,很多都是创建圆形和矩形,这两个很简单,传入图片的大小数据基本就可以搞定了。多边形的麻烦之处在于每个点的位置,Mac下有VertexHelper可以很轻松获取到多边形的每个点,然后创建出来,但Windows下,呃,确实我没找到什么好的工具,PhysicsEditor在以前使用Box2d原生的代码创建多边形还是挺好用的,现在就不太适合了,所以本篇的用法也是建立在它的之上做出来的,如果有好的办法,欢迎提出分享哈。

话不多说,看看如何利用PhysicsEditor来创建一个多边形。

打开PhysicsEditor,导入一张多边形,姑且咱们先拿个三角形开刀说,导入图片之后,选择上方的add polygon

<img src="http://www.2cto.com/uploadfile/Collfiles/20140823/201408230920218.png" alt="" http:="" www.2cto.com="" kf="" ware="" vc="" "="" target="_blank" class="keylink" style="box-sizing: border-box; border: medium none; vertical-align: middle; display: block; margin: 0px auto; max-width: 100%; width: 2090.67px; height: auto;">vcfQzsf40/LArbP2wLSjrM/x1eLR+aOsPC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140823/2014082309202110.png" alt="\">

这样多边形的几个点位置就算完成了,下面的步骤很关键,

在右边Exporter选择“Chipmunk generic”,因为cocos封装的多边形顶点是按照顺时针的方向来的,和box2d不一样,box2d是反方向的。

当你选择之后,会看到图中多了一个点,那个是锚点的位置,所以接下来是设置锚点的位置,新版的物理系统在setPhysicsBody的时候是将Body绑定在图片的中心点位置,所以我们在PhysicsEditor中绘制的Body区域也需要将锚点设置在中心点,不然回过头在创建Body的时候还要设置偏移量offset。

如下图,将关键的地方设置成(0.5, 0.5)就可以了。

接下来,保存一下这个文件,是一个plist格式的,用个Notepad++打开下,找到下面有个点数组的位置,

我们就是需要这一组点数据,我想后面的事大家应该就很清楚了,打开VS,创建一个多边形咯。

auto triangle = Sprite::create("CyanTriangle.png");   triangle->setPosition(Point(size.width/2, size.height*0.8)); Point points[3] = { Point(-50.00000, -43.50000), Point(0.00000, 43.50000), Point(51.00000, -43.50000) };  auto polygonBody = PhysicsBody::createPolygon(points, 3); triangle->setPhysicsBody(polygonBody); addChild(triangle);

PhysicsBody::createPolygon的参数第一个是点数组,第二个是数组的大小,也就是边的个数。

运行看一下效果,

由于打开了debug模式,所以红色的区域非常贴切,可以用啦。

当然咯,PhysicsEditor也可以做凹多边形的,不过这个步骤要麻烦不少,但过程基本一样,简单过一遍,

拿个logo图片做一下,可以右键添加点哦,然后简单拉出这样的效果。然后还是保存我们的plist文件。

对于凹多边形,我们的策略基本就是采用addShape的方式,将其分割成多个凸多边形,然后组合在一起,他们的碰撞区域是组合起来的,所以没问题。

这个时候打开plist文件,可以看到是这样的点数组,

它的策略也是这样的,所以符合我们的要求,只是这么多点,咱们要一个一个添加,确实略显麻烦,没办法,继续来吧。。。。

一个数组点创建一个多边形Shape,所以代码是这样的。

auto logo = Sprite::create("powered.png"); auto logoBody = PhysicsBody::create(); Point vert1[4] = { Point(1.00000, 134.50000), Point(24.00000, 111.50000), Point(-16.00000, 126.50000), Point(-22.00000, 149.50000) }; logoBody->addShape(PhysicsShapePolygon::create(vert1, 4)); Point vert2[4] = { Point(-100.00000, -149.50000), Point(24.00000, 111.50000), Point(101.00000, 111.50000), Point(101.00000, -149.50000) }; logoBody->addShape(PhysicsShapePolygon::create(vert2, 4)); Point vert3[4] = { Point(24.00000, 111.50000), Point(-100.00000, -149.50000), Point(-32.00000, 112.50000), Point(-16.00000, 126.50000) }; logoBody->addShape(PhysicsShapePolygon::create(vert3, 4)); Point vert4[3] = { Point(-32.00000, 112.50000), Point(-100.00000, -149.50000), Point(-100.00000, 112.50000) }; logoBody->addShape(PhysicsShapePolygon::create(vert4, 3)); logo->setPhysicsBody(logoBody); logo->setPosition(Point(size.width*0.8, size.height*0.7)); addChild(logo); logo->setRotation(180);

好了,这样就可以了,我还旋转了一下,为了测试一下上面那一撮头发的碰撞区域,哈哈~

本文转自:http://m.2cto.com/kf/201408/327977.html

转载于:https://www.cnblogs.com/Anzhongliu/p/6091778.html

Cocos2d-x v3.0物理系统 利用PhysicsEditor创建多边形相关推荐

  1. 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

  2. 360 os3.0 android7.1,【360 N6】360OS安卓7.1系统V3.0.070付费纯净版ROOT刷机包

    < 360 N6刷机包360OS系统V3.0.070付费纯净版详细信息: 适用机型:360 N6,QK1707-A01 安卓版本:安卓7.1 系统类型:官方修改系统,付费纯净版 版本信息:V3. ...

  3. 医疗环境电子数据交换标准HL7 v3.0的新进展

    HL7(health level seven)是基于国际标准化组织(ISO)所公布的网络开放系统互连模型(OSI)第7层(应用层)的医学信息交换协议.它自1987年第一版诞生以来,发展迅速,1988年 ...

  4. 1.物理系统PhysicsWorld,RayCast

     1 3.0物理系统PhysicsWorld T07PhysicsWorld.h #ifndef __T07PhysicsWorld_H__ #define __T07PhysicsWorld_H ...

  5. 观看实验中微型计算机虚拟拆装演示,虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0...

    下面我们对虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0文件阐述相关使用资料和虚拟仿真实验 北斗一号微机原理虚拟仿真实验系统64位 v3.0文件的更新信息. 虚拟仿真实验 北斗一号微机 ...

  6. OpenSSL 最新版 快速安装 v3.0.2 v1.1.1n Windows系统

    OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份.这个包广泛被应用在互联网的网页服务器上. 默认的Windows系统是不带opens ...

  7. 番茄花园系统工具盘 V3.0 DVD

    此次工具盘有2个版本,一个是单纯的DVD工具盘,一个是集合这次SKY美化版本的DVD工具盘! 一. 软件介绍           番茄系统工具盘3.0为2.0版本的升级版本,内容上除具备原有的系统工具 ...

  8. 智慧农业数字物联系统ECIOT V3.0助力农业大田大棚及农业产业园数字化升级

    一套完整的智慧农业物联网检测方案基本由作物生长环境监测系统.土壤墒情检测系统.虫情.苗青.灾情监测系统.灌溉水源监测系统四项组成,结合现场相关的数据采集及控制设备实现"云+端"的管 ...

  9. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增系统参数管理

    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增系统参数管理 欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快 ...

最新文章

  1. R语言ggplot2可视化使用geom_ribbon()函数向ggplot2图添加置信度带(Confidence Band、Confidence Interval)
  2. mysql命令行批量添加数据_mysql命令行批量插入100条数据命令
  3. Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
  4. MONGODB 集群架构 调整,增加延迟备份节点服务器,删除仲裁节点
  5. html绘制波形图,JS实现波形图
  6. jtessboxeditorfx 界面显示不出来_华为Mate40 Pro开箱简评,有点不开心
  7. 易语言 网页用什么编码_Plessey条码用的什么编码方式?
  8. android 图片墙拼贴,三步搞定 用APP打造图片文字拼贴效果
  9. 编译器、Make和CMake之间的关系
  10. 用几何(解析几何)方法求解概率问题
  11. nginx虚拟域名配置
  12. linux系统调用的使用例子,Linux增加系统调用步骤和实例
  13. 11.3.3 BINARY 和 VARBINARY 类型
  14. 计算机it dt ct基础知识,ot是什么意思,什么是CT,IT,DT,OT
  15. win10 安装 SqlServer2008 亲测可行
  16. php编写六十甲子纳音表_史上最完整的六十甲子纳音表详细说明
  17. 两个故事讲述什么是消息队列
  18. 织梦后台内容模型使用教程
  19. bigbrother的python第一天 复习基础知识
  20. 大数据:千万个“路人甲”的价值逻辑

热门文章

  1. js实现IE/Firefox的收藏功能
  2. USACO 1.1 Your Ride Is Here
  3. 对象关系映射(ORM)及代码生成器和插件C#源码(DBFrameworkV4.5.3)
  4. 2010年亚运会前广州将大力推广清洁能源公交
  5. Activiti中的关于子流程中的并发节点标记处理
  6. configurablebeanfactory
  7. Spring的bean实例化过程
  8. es6 --- Thunkify源码分析
  9. 笔试小结---非对称加密算法
  10. 04 组件与Props