首先你得知道这游戏有哪些组成部分:背景,精灵,动画,音效,图层关系啊等等
然后还得分析各个功能的实现逻辑:碰撞啊,跟踪啊,特效啊,关卡啊,子弹轨迹啊等等
头文件之间的应用,类的封装,函数的功能实现等等
再就是各种API的灵活运用啊,
至于为什么我们的第一款游戏要做打飞机,是因为这个游戏几乎能把做游戏该用的东西都用到,比较经典。
首先得在类里面声明创建场景的函数:
auto scene = Scene::create();
另外该有的引用不能少
using namespace CocosDenshion;
然后就是添加背景图片的三句代码:
//creat函数传了两个参数,一个是图片名字,矩形函数(图层坐标:X,Y,图片吃穿:宽,高)
auto sprite = Sprite::create("background.jpg",Rect(0,0,320,480));
sprite->setAnchorPoint(Vec2(0, 0)); //设置锚点
addChild(sprite); //添加到图层
//true表示循环播放,false表示播放一次
SimpleAudioEngine::getInstance()->playBackgroundMusic("menu.mp3", true);
是的,就只有这么一句。也没有多复杂不是吗?
//头文件中要声明Onstart的方法
auto item4 = MenuItemFont::create("play", CC_CALLBACK_1(HelloWorld::onStart, this));
item4->setTag(1); //这是给按钮设置标签
auto item3 = MenuItemFont::create("quit", CC_CALLBACK_1(HelloWorld::onStart, this));
item3->setTag(2);
//这是按钮的容器
auto menu = Menu::create(item4, item3, nullptr);
//下面两步完成添加到图层
menu->alignItemsVertically();
this->addChild(menu);
//设置文本按钮的坐标
menu->setPosition(Vec2(visibleSize.width / 2, visibleSize.height/2));
要切换场景,首先你得新建一个场景头文件,和CPP文件
头文件的名字和类名要一致,创建好的场景头文件要在第一个场景的CPP中做好引用
引用的步骤是:点击项目名->属性->常规->(后面的我忘了,明天再补起来)
//实现onstart方法
void HelloWorld::onStart(cocos2d::Ref* pSender)
{
auto str = (MenuItemFont*)pSender;
int tag = str->getTag();
if (tag == 1)
{
auto scene = StartGameScene::createScene();
//场景切换特效API的使用
Director::getInstance()->replaceScene(TransitionPageTurn::create(1.0, scene, true));
}else{
Director::getInstance()->end();
}
}
目前所了解到的就是,当我们将多个精灵缓存到一张图片上时,可以用Plist文件对图中的每一个精灵进行描述。当我们不调用时它们是不显示的,这样我们就可根据游戏的需要选择性的切换显示图片。这种方式能够提高效率也节省空间。(具体细节待明日扩展)