Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2D-x初探学习笔记(31)2.1新特性CCPhysicsSprite大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本篇文章继续介绍cocos2D-x2.1的新特性:CCPhysicsSprite和CCPhysicsDebugNode,从名称上就可以看出来这两个类是和物理引擎相关的类,和之前介绍的CCDrawNode一样,CCPhysicsSprite没有提供新功能,而是对之前功能的一个封装。

CCPhysicsSprite定义一个物理类绑定的精灵,它继承自CCSprite精灵类,它的使用来看一下TESTCpp项目,CCPhysicsSprite支持目前cocos2D-x中的box2Dchipmunk两个物理引擎,但是你只能使用定义预编译的宏变量CC_ENABLE_CHIPMUNK_INTEGRATION或CC_ENABLE_CHIPMUNK_INTEGRATION中的一个来使用box2Dchipmunk其中的一个,你可以通过两种方式来设置CC_ENABLE_CHIPMUNK_INTEGRATION或CC_ENABLE_CHIPMUNK_INTEGRATION的值,一种是在xcodebuildingsetTing中设置,如图所示


另一种是在Config.h文件中设置,如图所示


对于TESTCpp这个项目,这里需要说一句就是把引擎变成box2D后编译项目会报错,是因为没有对ChipmunkTest项目加入预编译的判断,对于该部分,我做了修改,下载地址:http://download.csdn.net/detail/bill_man/5012842

回到正题,介绍CCPhysicsSprite和CCPhysicsDebugNode的使用,CCPhysicsSprite只需要按照CCSprite的方法定义,然后将之前按照Chipmunk方式定义的body设置给精灵就可以了,代码如下:

CCPhysicsSprite*sprite=CCPhysicsSprite::createWithTexture(m_pSpriteTexture,CCRectMake(posx,posy,121));

parent->addChild(spritE);

sprite->setBody(body);

sprite->setPosition(pos);

可以打开2.1之前的版本的相同位置的文件(名称可能不同),可以看到当时我们要自己定义一个精灵类并且完成坐标的对应,有了CCPhysicsSprite之后就会更方便的使用。

CCPhysicsDebugNode是为了更方便debug的类,将它设置为显示之后,在场景内定义的精灵的碰撞形状块就显示出来了,如图所示

在这个例子中,点击Toggledebug就可以切换CCPhysicsDebugNode的显示和隐藏,定义CCPhysicsDebugNode的代码如下:

@H_771_96@m_pDebugLayer=CCPhysicsDebugNode::create(m_pSpacE);

this->addChild(m_pDebugLayer,Z_PHYSICS_DEBUG);

传入的参数是cpSpaceNew类实例,默认创建的一个CCPhysicsDebugNode是显示的,可以通过setVisible函数来控制它的显示与隐藏,需要说明的是CCPhysicsDebugNode目前只支持Chipmunk

CCPhysicsSprite在Box2D中的使用和Chipmunk类似(在TESTCpp中的Box2DTest中),只是多了一个函数需要设置,就是PTMRatio,即“cocos2D-x中的像素到box2D中的meters单位的转换比率”

:rgb(85,CCRectMake(32*idx,32*idy,32,32));

sprite->setPTMRatio(PTM_RATIO);

sprite->setPosition(ccp(p.x,p.y));

Box2DTest中还保留着之前为了使用box2D而定义的精灵类的代码,可以对比一下现在的使用,确实是方便很多了

对于CCPhysicsSprite的使用,有一些限制:

1Scale和Skew属性是忽略的,也就是说setScale或者setSkew后碰撞的形状块大小等不会改变。

2Position和rotation属性是有效的,如果你手动设置Position和rotation,负责控制碰撞的形状块的位置和旋转角度会改变。

3)一个项目中同时只能支持ChipmunkBox2D中的一个

如有错误,请多多指教,欢迎大牛拍砖

大佬总结

以上是大佬教程为你收集整理的cocos2D-x初探学习笔记(31)2.1新特性CCPhysicsSprite全部内容,希望文章能够帮你解决cocos2D-x初探学习笔记(31)2.1新特性CCPhysicsSprite所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。