cocos2d-x 如何添加粒子效果

来源:互联网 发布:农村淘宝电商培训资料 编辑:程序博客网 时间:2024/05/21 22:45

自己做cocos2d-x的程序已经是两年前的事了,现在突然心血来潮想写一下。

之前我在做一个游戏的时候,我在知道有粒子效果这个东西后,果断的想到了把它加到我的splash中,之前有一个很好用的粒子效果的一个软件,但是无奈,我现在已经不知道叫做什么名字,而且好像我也已经没有了资源。但是最近又找到了一个可以用的粒子效果器。ParticleDesigner Mac    提取码: p57i  点击可以进行下载。解压后只有两个文件,一个进行注册一下,另一个就可以使用。具体我不再说怎么使用了。

唠叨了大半天,,,正式进入主题

示例一

1.首先你得确认你是要将粒子效果加载到什么里面,如首先,可以进行测试一下,就是直接点击一个btn,然后释放粒子效果。代码如下:

//我在这里设置了一个btn回调事件,在点按btn时,将会触发事件发生。 这个写在cpp文件中,同时你应该在头文件中进行声明。

void HelloWorld::btnCallFunc(Ref *target){    auto _emiter =ParticleSystemQuad::create("res/test.plist");    //设置离子的纹理 test.plist就是你从粒子效果器中下载的粒子效果并加入到你创建的文件的 res文件下的    auto texture = Director::getInstance()->getTextureCache()->addImage("res/mo_3.png");
    //textture在这里的作用是设置了你的粒子效果最终呈现的形态,我在这里加了一个小方块图片,最终将会让我的小方块以粒子效果呈现。     _emiter->setTexture(texture);    _emiter->setStartColor(Color4F(1,0,0,1));    _emiter->setStartColorVar(Color4F(0,0,0,0));    _emiter->setEndColor(Color4F(1,0,0,1));    _emiter->setEndColorVar(Color4F(0,0,0,0)); //以上都只是设置粒子效果的一些简单函数以及参数,在cocos2d-x中你可以查看各个函数的作用以及应该是什么样子的参数
    _emiter->setPosition(Vec2(700,600));//设置粒子效果坐标    this->addChild(_emiter);//将此加载到本场景上}

如上图所示。。。图有点丑。。。勿介意     。。以上就是简单的加载粒子效果。

-------------------------------------------------------------------------------------------------------------------------------------------------------------

以上是分割线

之前说了我自己之前在做游戏时,把粒子加到了splash中,虽然有点不可取,因为正常我们是非常讨厌splash这个设定的。

但是我还是要说一下,如何加入到splash中。。。。

示例二

可以看到以下是一个动作的回调动作,到底是一个什么样的动作呢,这个可以由你自己决定,不要忘了在头文件中加上函数声明。

void SplashScene::actionSplashCallback(){    auto visibleSize = Director::getInstance()->getVisibleSize();//此处是获得当前屏幕的大小
    auto _emiter =ParticleSystemQuad::create("res/splash.plist");//设置离子的纹理    auto texture = Director::getInstance()->getTextureCache()->addImage("b.jpg");    _emiter->setTexture(texture);    _emiter->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2+200));    this->addChild(_emiter);}


比如当前场景fadein,然后在完全结束fadein的时候,你就可以进行动作回调。

auto callFuncSplash = CallFunc::create(CC_CALLBACK_0(SplashScene::actionSplashCallback, this));//可以在setUi的函数下进行编写代码,创建一个在当前场景的回调事件,
auto actionSplash = Sequence::create(fadeInBackground,delaySplash,callFuncSplash, NULL);//并将其创建动作回调函数callFuncSplash只是其中的一个回调动作而已,当然也可以只有这一个动作,也可以添加像是delaySplash 自命名的延迟几秒出现splash之类的动作回调事件,找机会我再补充。。。
spriteSplash->runAction(actionSplash);//再将这个动作回调加载到动作场景队列中即可




以上就是当时我设计的游戏的splash的最终效果图,粒子效果就是你能看到的小方块,从主logo背后散发出来。






0 0
原创粉丝点击