展会信息港展会大全

cocos2d-x-3.3-020-碰撞检测2-物理引擎初探,cocos2d碰撞检测 原理 Demo及源码 Demo解读 主要代码 优缺点 效果图 扩展阅读
来源:互联网   发布日期:2015-09-28 13:33:07   浏览:2368次  

导读: cocos2d-x-3.3-020-碰撞检测2-物理引擎初探,cocos2d碰撞检测 原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 不懂了,没深入研究物理引擎。...

cocos2d-x-3.3-020-碰撞检测2-物理引擎初探,cocos2d碰撞检测

原文同步发布于我的wiki,查看原文或更新请移步:

点击打开链接

原理

不懂了,没深入研究物理引擎。。。但用用还是可以的。

Demo及源码

基于cocos 3.4final

https://github.com/cheyiliu/CollisionDetection

Demo解读

每隔5s生成: 两架飞机,并从右往左飞行; 两颗子弹,从左向右飞。

注册碰撞事件监听,剩下的事情就是等待碰撞事件的回调了。

若发生碰撞,则播放相关动画

主要代码

构建物理世界

auto scene = Scene::createWithPhysics();

scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);//debug模式

Vect gravity = Vect(0.0f, 0.0f);//0重力

scene->getPhysicsWorld()->setGravity(gravity);

设置物理世界的大小

//定义世界的边界

auto body = PhysicsBody::createEdgeBox(visibleSize,

PHYSICSBODY_MATERIAL_DEFAULT,5.0f);

auto edgeNode = Node::create();

edgeNode->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));

edgeNode->setPhysicsBody(body);

this->addChild(edgeNode);

注册碰撞事件的监听

// 注册物理碰撞事件监听

auto listener = EventListenerPhysicsContact::create();

listener->onContactBegin = [this](PhysicsContact& contact)

{

return true;

};

listener->onContactPreSolve = [] (PhysicsContact& contact,

PhysicsContactPreSolve& solve) {

//log("onContactPreSolve");

return true;

};

listener->onContactPostSolve = [] (PhysicsContact& contact,

const PhysicsContactPostSolve& solve) {

//log("onContactPostSolve");

};

listener->onContactSeperate = [](PhysicsContact& contact) {

log("onContactSeperate");

};

Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(

listener, 1);

给精灵设置物理body

//设置物理body

auto body = PhysicsBody::createBox(sp->getContentSize());

body->setContactTestBitmask(0xFFFFFFFF);

sp->setPhysicsBody(body);

其他和上一篇cocos2d-x-3.3-019-碰撞检测1-矩形区域是否相交一样,略

优缺点

优点: 相比通过自己判断矩形区域是否有相交,省了相关的辅助数据结构和逻辑,代码看上去更精炼了。

缺点: 首先肯定会有性能上的损失,但主观判断下应该不大。

效果图

开了debug模式 https://github.com/cheyiliu/All-in-One/raw/master/res/cocos2d/CollisionDetection-way2-use-physics-engine.gif

扩展阅读

http://blog.csdn.net/tonny_guan/article/details/39584055

http://www.bkjia.com/Androidjc/954422.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/954422.htmlTechArticlecocos2d-x-3.3-020-碰撞检测2-物理引擎初探,cocos2d碰撞检测 原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 不懂了,没...

赞助本站

人工智能实验室

相关热词: android开发 android教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港