本人是大菜鸟一枚,刚入门cocos2d-x 不久,决定写个小游戏练练手感,发现OiteBoys的文章 cocos2dx制作flappybird,然后学习之,拿来练手
作者的版本是3.0 beta版本,而在3.0 rc0版本中有略微差别:
1)物理碰撞onContactBegin 参数变为一个
//物理碰撞 监听 auto contactListener = EventListenerPhysicsContact::create(); contactListener->onContactBegin = CC_CALLBACK_1(GameLayer::onContactBegin,this); this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener,this);
监听函数
bool GameLayer::onContactBegin(PhysicsContact& contact) { this->gameOver(); return true; }
2.body参数
在给小鸟和水管添加body的时候,需要添加如下属性,否则不会触发onContactBegin函数
body->setCategoryBitmask(1); // 0001 body->setContactTestBitmask(-1); // 0100 body->setCollisionBitmask(-1); // 0011
然后就是作者的代码还有一个微小的bug,就是点击retartBtn之后,小鸟碰撞之后会立马消失,而不是落地之后消失,解决方法是把小鸟不设置成单例模式
用普通的CREATE_FUNC()即可
附下载地址: