利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效

利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效,第1张

概述其实整个消灭星星开发也差不多了,为了使游戏好看些,不如为游戏添加一些特效 1.星星消除 有没有人发现,如果仅仅用简单的removeFromParentAndCleanUp方法来消除星星,会一下子消失,如果我们想一颗颗星星挨个地消失,不妨可以采用一下方法 在StarMatrix的update函数里面加入一个参数delta,这与cocos2dx的update函数的一样表示上一帧到这一帧的间隔时间,当间

其实整个消灭星星开发也差不多了,为了使游戏好看些,不如为游戏添加一些特效

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连击或以上的时候,会d出一个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,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,1));	effect->setEndcolor(getcolor4F(color));	effect->setEndcolorVar(color4F(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,0);}

只要在每次消除星星后(即removeFromParentAndCleanUp后),调用这个showStarParticleEffect方法,就可以给人一种好像是星星碎成小星星散落的效果。

总结

以上是内存溢出为你收集整理的利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效全部内容,希望文章能够帮你解决利用cocos2dx 3.2开发消灭星星(九)为游戏添加一些特效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1000105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存