展会信息港展会大全

【Cocos2D-x 3.5实战】坦克大战(2)游戏开始界面,cocos2d-x3.5
来源:互联网   发布日期:2015-09-28 11:27:07   浏览:1247次  

导读: 【Cocos2D-x 3.5实战】坦克大战(2)游戏开始界面,cocos2d-x3.5 关于游戏的素材都是在网上到处搜集到的,然后自己再用二流的ps技术修修改改的,所以有可能混在一起有点不搭...

【Cocos2D-x 3.5实战】坦克大战(2)游戏开始界面,cocos2d-x3.5

关于游戏的素材都是在网上到处搜集到的,然后自己再用二流的ps技术修修改改的,所以有可能混在一起有点不搭调(没有办法啊,没有美工Orz。。

项目已经建立好了,然后我们需要把我们下载的素材放到Resources文件夹。(游戏完成以后,我会把素材包上传的。。主要现在没有找完)

设置屏幕大小:

在vs中打开创建的项目,打开AppDelagate.cpp文件

在AppDelegate::applicationDidFinishLaunching()中添加代码

if(!glview) {

glview = GLViewImpl::create("Battle City"); //窗口标题

glview->setFrameSize(1280, 720); // 在这里设置创建窗口的尺寸,手机上不用设置,因为手机有固定的屏幕

director->setOpenGLView(glview);

}

在这个方法里面有director->setAnimationInterval(1.0 / 60);这行代码是作用是设置游戏的帧数,是游戏引擎调用OpenGL来绘制每一张图需要用到的时间,其中参数的意思为时间/画面数。这里我们不做修改

director->setDisplayStats(true);这一行代码它的作用在你游戏的左下角显示一些游戏的信息,比如说帧数,绘图等等数据,一般在我们调试的会将参数设置为true,但是完成发布之后一般设置为false,

游戏开始背景:

打开HelloWorldScene.cpp文件。

在init方法里面我们可以看到

// 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

Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的Sprite由Texure,frame和animation组成,由openes负责渲染。主要的类关系如下: 简单过程可描述为:使用Texture2D加载图片,可以用Texture2D生成对应的SpriteFrame(精灵帧),将SpriteFrame添加到Animation生成动画数据,用Animation生成Animate(就是最终的动画动作),最后用Sprite执行这个动作。

把原来的代码删除掉并添加

// 开始背景

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);

运行试一下

好了,游戏的开始界面大致做好了。。现在看有点单调,以后再添加其他功能吧。。

原文链接: http://www.bugcoding.com/entry/8

http://www.bkjia.com/Androidjc/986409.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/986409.htmlTechArticle【Cocos2D-x 3.5实战】坦克大战(2)游戏开始界面,cocos2d-x3.5 关于游戏的素材都是在网上到处搜集到的,然后自己再用二流的ps技术修修改改...

赞助本站

人工智能实验室

相关热词: android开发 android教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港