利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效
来源:互联网 发布:看外汇行情的软件 编辑:程序博客网 时间:2024/05/17 07:55
其实整个消灭星星开发也差不多了,为了使游戏好看些,不如为游戏添加一些特效
1.星星消除
有没有人发现,如果仅仅用简单的removeFromParentAndCleanUp方法来消除星星,会一下子消失,如果我们想一颗颗星星挨个地消失,不妨可以采用一下方法
在StarMatrix的update函数里面加入一个参数delta,这与cocos2dx的update函数的一样表示上一帧到这一帧的间隔时间,当间隔时间达到一定时间后,消除星星。
void StarMatrix::updateStar(float delta){for(int i = 0;i < ROW_NUM;i++){for(int j = 0;j< COL_NUM;j++){if(stars[i][j]!=nullptr){stars[i][j]->updatePosition();}}}if(needClear){clearSumTime += delta;if(clearSumTime > ONE_CLEAR_TIME){clearMatrixOneByOne();clearSumTime = 0;}}}
needClear是一个flag,当游戏判断不能再继续后(看上一节),这个flag变为true,开始消除剩下的星星
clearSumTime是一个累加器
ONE_CLEAR_TIME就是每颗星星消除的时间
2.连击加分信息
一般消除一次星星都会有连击信息和加多少分的信息。我是采用一个固定在GameLayer的Label,通过设置其内容以及是否可见(visible)来实现
3.连击combo效果
当达到5连击,7连击,10连击或以上的时候,会弹出一个combo效果。
其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。
源码
ComboEffect.h
#ifndef _COMBO_EFFECT_H_#define _COMBO_EFFECT_H_#include "cocos2d.h"using namespace cocos2d;void showComboEffect(int size,Node* node);#endif
ComboEffect.cpp
#include "ComboEffect.h"void showComboEffect(int size,Node* node){if(size<5)return;Size visibleSize = Director::getInstance()->getVisibleSize();Sprite* comboSprite;if(size>=10){comboSprite = Sprite::create("combo_3.png");}else if(size>=7){comboSprite = Sprite::create("combo_2.png");}else{comboSprite = Sprite::create("combo_1.png");}comboSprite->setPosition(Point(visibleSize.width/2,visibleSize.height/2));node->addChild(comboSprite);Blink* blink = Blink::create(1.0f,5);CallFunc* remove = CallFunc::create([=](){comboSprite->removeFromParentAndCleanup(true);});Sequence* action = Sequence::create(blink,remove,nullptr);comboSprite->runAction(action);}
4.消除星星粒子效果
消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎
对于粒子特效不了解得可以先去cocos2dx中文社区里面找几篇文章看看。这里直接贴出代码。
StarParticle.h
#ifndef _STAR_PARTICLE_H_#define _STAR_PARTICLE_H_#include "cocos2d.h"using namespace cocos2d;void showStarParticleEffect(int color,Point position,Node* node);Color4F getColor4F(int color);#endif
StarParticle.cpp
#include "StarParticle.h"#include "Star.h"void showStarParticleEffect(int color,Point position,Node* node){ParticleExplosion* effect = ParticleExplosion::create();effect->setTexture(Director::getInstance()->getTextureCache()->addImage("star.png"));effect->setTotalParticles(15);effect->setStartColor(getColor4F(color));effect->setStartColorVar(Color4F(0,0,0,1));effect->setEndColor(getColor4F(color));effect->setEndColorVar(Color4F(0,0,0,1));effect->setStartSize(25.0f);effect->setGravity(Point(0,-300));effect->setLife(1.0f);effect->setSpeed(200);effect->setSpeedVar(10);effect->setPosition(position);node->addChild(effect);}Color4F getColor4F(int color){switch(color){case Star::color::PURPLE:return Color4F(0.74,0.30,0.99,1);//return Color4F(189,78,253,1);case Star::color::BLUE:return Color4F(84/255.0f,203/255.0f,254/255.0f,1);case Star::color::RED:return Color4F(253/255.0f,80/255.0f,126/255.0f,1);case Star::color::YELLOW:return Color4F(253/255.0f,234/255.0f,84/255.0f,1);case Star::color::GREEN:return Color4F(132/255.0f,226/255.0f,111/255.0f,1);}return Color4F(1,1,1,0);}
只要在每次消除星星后(即removeFromParentAndCleanUp后),调用这个showStarParticleEffect方法,就可以给人一种好像是星星碎成小星星散落的效果。
0 0
- 利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效
- 利用cocos2dx 3.2开发消灭星星(十)为游戏添加音效(项目源码分享)
- 利用cocos2dx 3.2开发消灭星星(四)游戏主场景
- 利用cocos2dx 3.2开发消灭星星(八)游戏的结束判断与数据控制
- 利用cocos2dx 3.2开发消灭星星(一)基本介绍
- 利用cocos2dx 3.2开发消灭星星(七)关于星星的算法
- 利用cocos2dx 3.2开发消灭星星(六)如何在cocos2dx中显示中文
- 利用cocos2dx 3.2开发消灭星星(二)菜单(附素材)
- 利用cocos2dx 3.2开发消灭星星(三)常用的飘字效果
- 利用cocos2dx 3.2开发消灭星星(五)update与触摸事件
- cocos2dx小游戏源码(消灭星星)
- cocos2dx 消灭星星
- 用pharser 开发 消灭星星游戏【草稿】
- 纯js 消灭星星游戏,js 消灭星星游戏实现原理,有道具的消灭星星
- 消灭星星(PopStar)游戏的自动处理
- HTML5游戏实战之消灭星星(完整源代码)
- cocos2dx 编写消灭星星音效加载
- PopStar(消灭星星)游戏源代码下载、分析及跨平台移植---第一篇(界面)
- 文件操作
- 做游戏?
- 让APP快速适配iPhone6及Plus的诀窍
- CF 21C Stripe 2
- Ios UI简单的相册
- 利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效
- OJ2007题、2008题、2009题、2010题、2011题
- (Dis-ordered) Genome-scale prediction of proteins with long intrinsically disordered regions
- 各种语言基本语法
- hdu 3586 Information Disturbing 树形dp+二分
- hdu 5014 思维题/推理
- 机房收费中Panel控件解决子父窗体显示
- extjs ----mvc
- MacVim神器