cocos2d-x-3.3-020-碰撞检测2-物理引擎初探
发布时间:2020-12-14 20:18:32 所属栏目:百科 来源:网络整理
导读:原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 不懂了,没深入研究物理引擎。。。但用用还是可以的。 Demo及源码 基于cocos 3.4final https://github.com/cheyiliu/CollisionDetection Demo解读 每隔5s生成: 两架飞机,并从右往左飞行
原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接
原理
Demo及源码
Demo解读
主要代码
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 auto body = PhysicsBody::createBox(sp->getContentSize()); body->setContactTestBitmask(0xFFFFFFFF); sp->setPhysicsBody(body);
优缺点
效果图
扩展阅读
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |