关于游戏的素材都是在网上处处搜集到的,而后本身再用二流的ps技术修修改改的,因此有可能混在一块儿有点不搭调(没有办法啊,没有美工Orz。。app
项目已经创建好了,而后咱们须要把咱们下载的素材放到Resources
文件夹。(游戏完成之后,我会把素材包上传的。。主要如今没有找完)函数
在vs中打开建立的项目,打开AppDelagate.cpp文件动画
在AppDelegate::applicationDidFinishLaunching()中添加代码ui
if(!glview) { glview = GLViewImpl::create("Battle City"); //窗口标题 glview->setFrameSize(1280, 720); // 在这里设置建立窗口的尺寸,手机上不用设置,由于手机有固定的屏幕 director->setOpenGLView(glview); }
在这个方法里面有director->setAnimationInterval(1.0 / 60);
这行代码是做用是设置游戏的帧数,是游戏引擎调用OpenGL
来绘制每一张图须要用到的时间,其中参数的意思为时间/画面数。这里咱们不作修改
this
director->setDisplayStats(true);
这一行代码它的做用在你游戏的左下角显示一些游戏的信息,好比说帧数,绘图等等数据,通常在咱们调试的会将参数设置为true
,可是完成发布以后通常设置为false
,spa
打开HelloWorldScene.cpp文件。调试
在init方法里面咱们能够看到code
// add "HelloWorld" splash screen" auto sprite = Sprite::create("HelloWorld.png"); // position the sprite on the center of the screen sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
这个就是建立背景,和设置背景位置坐标的代码了(Cocos2d坐标系和OpenGL坐标系同样,原点为屏幕左下角,x向右,y向上。)游戏
这里使用了精灵这一律念,下面是关于cocos2d的精灵的中文wiki图片
把原来的代码删除掉并添加
// 开始背景 auto startBackground = Sprite::create("ui/start_background.png"); // 设置精灵相对于屏幕的位置(绝对坐标系) startBackground->setPosition(Vec2(visibleSize.width/2 + origin.x, 0)); // 设置锚点 startBackground->setAnchorPoint(Vec2(0.5, 0)); // 设置精灵的Tag,以后能够经过标签找到这个精灵,并对这个精灵进行操做 startBackground->setTag(START_BACKGROUD); // 将背景精灵添加到层中。其中第二个参数0是设置可见优先权,数值越小优先权越小,若是有其余的精灵的优先权比他大时,他会被遮挡住 this->addChild(startBackground, 0);
并在helloworldscene.h中添加const int START_BACKGROUD = 101;
在HelloWorldScene.h中的helloworld类中声明两个公有回调方法,功能是点击菜单时触发。
void menuCloseCallback(cocos2d::Ref* pSender); void menuStartCallback(cocos2d::Ref* pSender);
在HelloWorldScene.cpp中添加函数实现方法,close方法就用原来的 (具体功能暂时不写)
// 开始游戏,暂时不写具体内容 void HelloWorld::menuStartCallback(Ref* pSender) { }
如今能够在init方法中添加菜单了
// 开始菜单, 第一二个参数分别是未点击和点击时显示的图片 auto startItem = MenuItemImage::create("ui/game_start.png", "ui/game_start.png", CC_CALLBACK_1(HelloWorld::menuStartCallback, this)); startItem->setPosition(Vec2(origin.x + visibleSize.width/4, origin.y + visibleSize.height/3 * 2)); auto closeItem = MenuItemImage::create("ui/game_exit.png", "ui/game_exit.png", CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); closeItem->setPosition(Vec2(origin.x + visibleSize.width/4, origin.y + visibleSize.height/3 * 2 - startItem->getContentSize().height - 20)); // 将菜单项添加到精灵里面 auto menu = Menu::create(closeItem, startItem, NULL); // 将菜单加入当前层 menu->setPosition(Vec2::ZERO); this->addChild(menu, 1);
运行试一下
好了,游戏的开始界面大体作好了。。如今看有点单调,之后再添加其余功能吧。。