cocos2d-x小游戏
本节主要是通过一个小游戏来说明一下几个问题
1.如何添加一个精灵
2.如何移动一个精灵
3.如何相应触摸事件
4.如何对碰撞事件进行处理
5.如何添加声音
6.控制游戏的输赢
具体可以参照官网http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Tutorials 本人在这里只是做个总结,素材方面也是在官网提供
1.添加一个精灵
资源路径:http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_2_-_How_to_Add_a_sprite
四步骤:
//1.初始化
CCSprite::create("Play.png",CCRectMake(0,0,27,40));
//2.检测
CC_BREAK_IF(!pSprite);
//3.设置坐标点
pSprite->setPosition(ccp(pSprite->getContentSize().width/2,size.height/2));
//4.添加到当前图层
this->addChild(pSprite);
如何让精灵移动
原理:
给精灵绑定动作
一类是瞬时动作(CCActionInstant);
一类是延时动作(CCActionInterval);
在精灵加入当前图层之后
初始化CCAction
然后将精灵用runAction方法绑定动作
代码:
//添加怪物精灵
void HelloWorld::addTarget(){
//首先初始化怪物精灵
CCSprite* pTarget=CCSprite::create("Target.png",CCRectMake(0,0,27,40));
CCSize winSize=CCDirector::sharedDirector()->getWinSize();
//计算可绘制的范围
int minY=pTarget->getContentSize().height/2;
int maxY=winSize.height-minY;
//计算可随机基数
int rangeY=maxY-minY;
//随机出的基数*半个身位=最后坐标点
int actualY=(rand()%rangeY)+minY;
pTarget->setPosition(ccp(winSize.width+pTarget->getContentSize().width/2,actualY));
this->addChild(pTarget);
//pTarget->setTag(1);
//_targets->addObject(pTarget);
//计算移动速度 最慢4秒 移动横屏 最快两秒
int minDuration=(int)2.0;
int maxDuration=(int)4.0;
int rangeDuration=maxDuration-minDuration;
int actualDuration=(rand()%rangeDuration)+minDuration;
//初始化耗时动作
CCFiniteTimeAction* actionMove=CCMoveTo::create((float)actualDuration,ccp(0-pTarget->getContentSize().width/2,actualY));
//这是一个回调方法 主要为在精灵动作完成后的操作
CCFiniteTimeAction* actionMoveDone=CCCallFuncN::create(this,callfuncN_selector(HelloWorld::spritMoveFinished));
//绑定动作
pTarget->runAction(CCSequence::create(actionMove,actionMoveDone,NULL));
}
如何响应触摸事件
原理:
1.讲当前图层设置为响应图层
2.重写父类的监听方法
3.在监听方法里可活动当前点击的坐标点对其进行处理
1.在头文件中添加类的声明
//声明点击事件方法
virtual void ccTouchesEnded(cocos2d::CCSet* touches,cocos2d::CCEvent* event);
2.实现方法
//点击事件处理
void HelloWorld::ccTouchesEnded(CCSet* touches,CCEvent* event){}
添加声音
声音素材
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_6_-_How_to_Play_Music_and_Sound_Effect
//添加子弹声音
CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("pew-pew-lei.wav");