Cocos2d-x基础实例1-放置精灵
来源:互联网 发布:2016黄石房地产数据 编辑:程序博客网 时间:2024/06/03 11:18
/*这个游戏的描述:
游戏胜利条件:完成当前关卡的击杀敌人数量,跳到下一关。
游戏失败条件:当前关卡的声明值降低为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 namespacecocos2d;
这样以后使用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");
//获得playerSprite的Size
CCSize playerSize=player->getContentSize();
//设置player坐标,x坐标取屏幕宽的一半,y坐标取plyaer精灵的一半 player->setPosition(ccp(winSize.width*0.5,playerSize.height*0.5));
我们的小飞机乖乖在中央了,下一篇,我们让他动起来。
- Cocos2d-x基础实例1-放置精灵
- Cocos2d-x基础示例-精灵移动1
- Cocos2d-x 基础示例-精灵移动2
- Cocos2d-x基础示例 精灵移动3
- cocos2d-x 基础--导演,场景,层,精灵
- cocos2d-x(3): 创建精灵基础学习
- cocos2d-x(精灵类)
- cocos2d-x创建精灵
- Cocos2d-x精灵创建
- Cocos2d-x 精灵贴图
- Cocos2d-x 精灵移动
- cocos2d-x创建精灵
- cocos2d-x之精灵
- cocos2d-x中的精灵
- Cocos2d-X的精灵
- Cocos2d-X----精灵
- cocos2d-x 单色精灵
- Cocos2d-x中的精灵
- objdump(GCC)命令的用法
- Java Web
- 韩顺平_php从入门到精通_视频教程_第4讲_图像_表格_实际应用-菜谱_课堂练习-课程表_学习笔记_源代码图解_PPT文档整理
- Vim设置
- Django_ 安装、创建、配置、admin使用(1)
- Cocos2d-x基础实例1-放置精灵
- 基于S5PC100的FIMC控制器解析
- gedit显示一些带汉字的文件时,会显示乱码,这时就需要设置一下,使它能支持GB18030编码
- 图解android的单线程UI机制(以最简单的方式)
- 地址收藏Oracle ATG Web Commerce Online Library
- C#程序设计(十六)----窗体上有一个文本框中只能输入0至9十种数字、a至z或A至Z五十二种字符
- etmvc+jQuery EasyUI使用教程(一)
- Fedora16 mysql 忘记root用户密码解决办法
- MySQL 常见报错