原文地址http://www.is17.com/p181.html
学习cocos2dx3.1中,网上教程不算特别多,参照各种教程,慢慢总结编写,跟引用了一些优秀类,总算做出来了个超简单的像素鸟游戏。
现在讲解一下核心内容跟,我遇到的一些问题的处理方法。
一、新建项目:
其实网上各种各样的环境配置眼花缭乱的也不一定配置成功,我们要做的仅仅是建一个可以显示helloworld的东西。
我这里有个超简单的方法。
原材料:vs2012,cocos2dx3.1.1 没错,只需要这些。
打开某英文(中文将导致编译失败)目录下的D:\cocos2d-x-3.1.1\build\cocos2d-win32.vc2012.sln
右键解决方案,生成解决方案,等十几分钟吧大概。i3i5表示都是100%cpu,卡的一比。
完了之后,右键cpp-empty-test->设为启动项目。---->F5。不出意外的话出现了helloworld,这么简单都失败的话请百度。
我们的新项目就是改这个东西,我们仅仅是学习,现在不用看那些各种Python的东西来生成新项目====。
二、分析游戏:
其实我写的时候是俩眼一抹黑,先做核心,然后在添加各种功能,然后代码各种改,对于一个没有学过c++的人,各种问题各种出。
真正做东西我们要理清思路,设计类什么的更好一些。思路清晰方能事半功倍。
小鸟,背景,水管,地面各做一个类,我写的仓促,地面并没有写成类。
小鸟类核心代码:Player
- boolPlayer::init()
- {
- //当时为了显高端引用了别人的一个大图类,所有资源打包的那种,其实并不好用,而且我并不知道他的包怎么打,但是思路挺好,真正的官方用法是引用cocostudio打包
- playerSp=Sprite::createWithSpriteFrame(AtlasLoader::getInstance()->getSpriteFrameByName("bird0_0"));
- //注释掉这一句跟上句相同效果。
- //playerSp=Sprite::create("bird0_0.png");
- this->addChild(playerSp);
- //小鸟飞行动画
- autoanimation=Animation::create();
- charszName[100]={0};
- //将小鸟的三张图片做成动画,
- for(inti=0;i<3;i++)
- {
- sprintf(szName,"bird0_%d.png",i);
- animation->addSpriteFrameWithFile(szName);
- }
- animation->setDelayPerUnit(1.8f/14.0f);
- autoaction=Animate::create(animation);
- //小鸟循环飞行
- playerSp->runAction(RepeatForever::create(action));
- //添加刚体,这个类中小鸟自动附加到刚体上
- autobody=PhysicsBody::createCircle(playerSp->getContentSize().width*0.3f);
- body->getShape(0)->setFriction(0);
- body->getShape(0)->setRestitution(1.0f);
- //以下三行设定可以碰撞,具体参数不懂,反正这样就触发碰撞了。
- body->setCategoryBitmask(1);//0001
- body->setCollisionBitmask(1);//0001
- body->setContactTestBitmask(1);this->setPhysicsBody(body);
- returntrue;
- //小鸟死亡,仅作了停止播放动画
- voidPlayer::die(){
- playerSp->stopAllActions();
- }
背景类:bggroundlayer