Cocos2d-x基础实例1-放置精灵

/*这个游戏的描述:

游戏胜利条件:完成当前关卡的击杀敌人数量,跳到下一关。

游戏失败条件:当前关卡的声明值降低为0

基本规则描述:游戏初始,玩家单位在屏幕左边的一个位置做一个钟摆运动,即以一定速度向上或向下移动,碰到边缘即原速度反弹。怪物从右边缘外生成,以不同的移动方式向屏幕左边移动。

移动规则:玩家可点击屏幕的上下方向,增加/减少玩家单位的移动速度(视点击的位置与玩家单位当前位置在y轴上的相对位置),每次点击都会增加/减少固定的速度。

射击规则:玩家点击射击按钮,即发射一个子弹,子弹命中一个敌人后,即可杀死它,

加分规则:杀死敌人后,加1分,与礼包单位发生碰撞,吃掉礼包,加10分。

减命规则:敌人越过屏幕左边,或者敌人与玩家单位发生碰撞,各减一命,与玩家单位碰撞的敌人单位消失。

生命初始:每关玩家初始生命值为10

积分规则:得分每关累计,并且得出最高分后,恭喜玩家

*/

 

上述是这个游戏的简单描述,下面开始游戏构建。

第一步:建立HelloWorld

第二步:

删掉示例代码,

HelloWorld.h中删掉下列声明:       

    voidmenuCloseCallback(CCObject* pSender);

HelloWorld.cpp中,删除init函数

    if ( !CCLayer::init() )

    {

        return false;

    }

以下的所有代

同时删除menuCloseCallback的实现。

以及那个预编译的平台判断,恩恩。

之后把resource文件夹中的图片全都删掉,太干扰视线了。

编译一下,世界清净了。

如果想再清净一下的话,把AppDelegate.cpp中的

   pDirector->setDisplayStats(true);

中的true设置为false,屏幕就彻底跟哈登一样黑了。

然后我去搞架飞机,

这架飞机很萌啊,就它了。稍微P一下,要存PNG的。

 

把他复制到resource文件夹中去,然后在Xcode中加add一下(不知道怎么Add去面壁思过)

接着,在HelloWorld.h中添加如下代码

 

    //定义主角精灵

CCSprite *player;

要注意一点,本人较懒,所以在预编译include之后,直接增加了

using namespace cocos2d;

这样以后使用cocos2d就不用总在前面增加“cocos2d::”这种费劲的东了

 

接下来,在HelloWorld.cpp的init()中,增加如下语句;

    //使用CCSprite类的静态方法,生成一个CCSprite对象

    player=CCSprite::spriteWithFile("Plane.png");

    //设置player坐标

    player->setPosition(ccp(100,100));

    //player 加入到HelloWorld 这个节点上去

this->addChild(player);

 

运行之后,图像是这个样子的:


好吧,这个灰机不在屏幕正中央,非常令人蛋疼,看来100,100是不行的,得换个坐标;

换成100,155之后,看起来好多了(不同设备坐标点数值的问题,请查看cocos2d的官方文档)。

但是这里面有个问题,难道每次我们都需要手动设置坐标系么?那iPad版本是不是也要设置到屏幕正中央呢??

所以我们换一种方法

依然在init()函数中:

    //CCDirector这个单件中获得屏幕坐标

CCSize winSize=CCDirector::sharedDirector()->getWinSize();

然后,setPosition变成什么样子呢?

    //设置player坐标,x坐标取屏幕宽的一半

player->setPosition(ccp(winSize.width*0.5,100));

*这里面有个小知识,苹果的设备采用的是高通的芯片,实际上是不支持除法运算的,所在使用除法的时候效率很低,所以尽量采用0.5的方式,而不是/2这种方式*

这样看起来其实还不够完美,那个100是什么情况?

所以在player声明之后,我还要取到player的大小,然后把它放置到屏幕底部,代码如下:

    //使用CCSprite类的静态方法,生成一个CCSprite对象

    player=CCSprite::spriteWithFile("Plane.png");

    //获得playerSpriteSize

    CCSize playerSize=player->getContentSize();

//设置player坐标,x坐标取屏幕宽的一半,y坐标取plyaer精灵的一半    player->setPosition(ccp(winSize.width*0.5,playerSize.height*0.5));


我们的小飞机乖乖在中央了,下一篇,我们让他动起来。

Cocos2d-x实战:C++卷》[1] 系统论述了Cocos2d-x游戏开发理论与实践。全书内容涵盖了Cocos2d-x的核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、数据交换格式、内存管理、性能优化、平台移植、程序代码管理、三大应用商店发布产品等。本书共29章,按内容结构可分为六篇: 第一篇开发基础,即第2章~第8章,内容包括Cocos2d-x简介、环境搭建、字符串、标签、菜单、精灵、场景、层、动作、特效、动画和Cocos2d-x用户事件。 第二篇开发进阶,即第9章~第12章,内容包括游戏音乐与音效、粒子系统、瓦片地图和物理引擎。 第三篇数据与网络,即第13章~第17章,内容包括Cocos2d-x中使用的数据容器类、数据持久化、数据交换格式、基于HTTP网络通信和基于Node.js的Socket.IO网络通信。 第四篇设计与优化,即第18章~第20章,内容包括Cocos2d-x中的常用设计模式、Cocos2d-x中的内存管理和性能优化。 第五篇平台移植,即第21章~第23章,内容包括从Win32到Android平台的移植、从Win32到WindowsPhone8平台的移植和从Win32到iOS平台的移植。 第六篇开发实战,即第24章~第29章,内容包括使用Git管理程序代码和多个项目实战——迷失航线手机游戏项目开发、为迷失航线游戏添加广告、发布放到Googleplay应用商店、发布放到WindowsPhone应用商店和发布放到苹果AppStore。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值