Cocos2d-x 3.2 大富翁游戏项目开发-第十一部分 提升角色行走体验
来源:互联网 发布:电子签名生成器软件 编辑:程序博客网 时间:2024/05/20 11:32
角色在获取随机步数走之前需要友好的提示玩家是哪个角色开始行走,要走几步。
这样我们在行走之前让角色闪一下,并把角色要走的路径用特殊颜色标注一下。效果如下
首先实现角色闪动:闪动是角色相关的,所以我们在RicherPlayer类的startGo方法中修改最合适
voidRicherPlayer::startGo(std::vector<int>rowVector,std::vector<int>colVector){//创建淡入淡出的动作,让角色运行,动作结束后,调用startRealGo开始行走。此处用了闭包函数简化代码FadeOut* fadeout = FadeOut::create(0.2);FadeIn* fadein = FadeIn::create(0.2);this->runAction(Sequence::create(fadeout,fadein,CallFunc::create([rowVector,colVector,this](){RicherGameController* instance =RicherGameController::getInstance();instance->startRealGo(rowVector,colVector,this);}),NULL));}</span>
下一步开始给路径标注颜色,我们用6个sprite来做,把这6个sprite 放入Vector中,每次根据行走步数,从vector取出sprite,放置在路径位置,每次走完这个路径位置,把该sprite的visible属性设置为false 不可见。逻辑清楚了代码写起来也很简单
GameBaseScene.h 头文件如下:class GameBaseScene: public Layer{public: ………………..static Vector<Sprite*> pathMarkVector;//定义Vector 用来存放6个路径遮挡精灵static void drawPathColor(std::vector<int> rowVector,std::vector<int> colVector);//绘制路径遮挡方法private: void addPathMark();//定义添加遮挡精灵的方法 …………………….}
bool GameBaseScene::init(){………………..//添加遮挡的方法一定要在添加角色方法之前,防止角色也被遮挡住addPathMark();addPlayer();……………………..return true;}
在GameBaseScene.cpp中实现这个addPathMark方法
void GameBaseScene::addPathMark(){//这个方法就是创建6个路径遮挡Sprite,并添加到当前场景中Sprite* mark1 = Sprite::create(PATH_MARK_1);Sprite* mark2 = Sprite::create(PATH_MARK_2);Sprite* mark3 = Sprite::create(PATH_MARK_3);Sprite* mark4 = Sprite::create(PATH_MARK_4);Sprite* mark5 = Sprite::create(PATH_MARK_5);Sprite* mark6 = Sprite::create(PATH_MARK_6);mark1->setAnchorPoint(ccp(0,0));mark2->setAnchorPoint(ccp(0,0));mark3->setAnchorPoint(ccp(0,0));mark4->setAnchorPoint(ccp(0,0));mark5->setAnchorPoint(ccp(0,0));mark6->setAnchorPoint(ccp(0,0));//都为不可见mark1->setVisible(false);mark2->setVisible(false);mark3->setVisible(false);mark4->setVisible(false);mark5->setVisible(false);mark6->setVisible(false);addChild(mark1);addChild(mark2);addChild(mark3);addChild(mark4);addChild(mark5);addChild(mark6);pathMarkVector.pushBack(mark1);pathMarkVector.pushBack(mark2);pathMarkVector.pushBack(mark3);pathMarkVector.pushBack(mark4);pathMarkVector.pushBack(mark5);pathMarkVector.pushBack(mark6);}
//绘制路径遮挡方法void GameBaseScene::drawPathColor(std::vector<int> rowVector,std::vector<int> colVector){//取得要绘制遮挡数量,因为路径数组0的位置是角色当前位置,不应绘制遮挡int stepsCount = rowVector.size()-1; //从遮挡容器中取出遮挡Sprite,放置到对应位置,并设为可见for(int i=1;i<rowVector.size();i++){pathMarkVector.at(i-1)->setPosition(ccp(colVector[i]*32,rowVector[i]*32));pathMarkVector.at(i-1)->setVisible(true);}}
在RicherPlayer::startGo方法中在真正开始行走之前,画出路径遮挡效果void RicherPlayer::startGo(std::vector<int> rowVector,std::vector<int> colVector){//Blink* blink = Blink::create(0.5,1);FadeOut* fadeout = FadeOut::create(0.2);FadeIn* fadein = FadeIn::create(0.2);//画出路径遮挡效果GameBaseScene::drawPathColor(rowVector,colVector);this->runAction(Sequence::create(fadeout,fadein,CallFunc::create([rowVector,colVector,this](){RicherGameController* instance =RicherGameController::getInstance();instance->startRealGo(rowVector,colVector,this);}),NULL));}
void RicherGameController::endGo(){//在每次移动结束后,把当前路径遮挡效果设为不可见,这样就出现了每走完一步,当前路径遮挡消失的效果GameBaseScene::pathMarkVector.at(stepHasGone)->setVisible(false);stepHasGone++;………………log("go end");}
点击下载代码 http://download.csdn.net/detail/lideguo1979/8305165
未完待续.........................
1 0
- Cocos2d-x 3.2 大富翁游戏项目开发-第十一部分 提升角色行走体验
- Cocos2d-x 3.2 大富翁游戏项目开发-第八部分 角色按路径行走
- Cocos2d-x 3.2 大富翁游戏项目开发-第十部分实现人物轮流行走
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十七部分 技能提升和游戏结束判断
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_1
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十五部分 大富翁股市
- Cocos2d-x 3.2 大富翁游戏项目开发
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十八部分 游戏保存和载入存档游戏
- Cocos2d-x 3.2 大富翁游戏项目开发-第九部分 代码部分优化
- Cocos2d-x 3.2 大富翁游戏项目开发-第五部分 单机游戏-关卡选择ScrollView
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十九部分 游戏配音
- Cocos2d-x 3.2 大富翁游戏项目开发-第三十部分 项目移植
- Cocos2d-x 3.2 大富翁游戏项目开发-第二部分片头动画
- Cocos2d-x 3.2 大富翁游戏项目开发-第三部分 菜单场景
- Cocos2d-x 3.2 大富翁游戏项目开发-第四部分 退出对话框
- Cocos2d-x 3.2 大富翁游戏项目开发-第六部分 地图设计
- java string 反转
- 深圳的面试之旅--还是有一家公司没有拿到offer
- 算法基础--快速排序详解
- Java 中十进制和十六进制的相互转换
- 快速搭建subversion服务器
- Cocos2d-x 3.2 大富翁游戏项目开发-第十一部分 提升角色行走体验
- python下出现SyntaxError: Non-ASCII character '\xe5' in file 的解决办法
- hdu 5131 STL的应用+在线查询
- SSH框架之Hibernate(2)——三种状态
- 用 WEKA 进行数据挖掘,第 3 部分: 最近邻和服务器端库
- IOS学习之UITableView
- 带有EXISTS谓词的子查询
- Qt学习之路之解决中文乱码
- 有关Log4j设置日志文件位置的处理