void Tutorial::Crash()// draws the animation for a crash and pasticles that fly out from there { //animation code auto spritecache = SpriteFrameCache::getInstance(); spritecache->addSpriteFramesWithFile("GameScreen/explosion.plist"); cocos2d::SpriteFrame* spriteFrame = spritecache->getSpriteFrameByName("explosion0.png"); cocos2d::Vector<cocos2d::Sprite *> m_aiSprites; cocos2d::Vector<cocos2d::SpriteFrame*> m_animFrames; for (int i = 0; i < 23; i++) { // Get a SpriteFrame using a name from the spritesheet .plist file. m_animFrames.pushBack(spritecache->getSpriteFrameByName("explosion" + std::to_string(i) + ".png")); } // Create the animation out of the frames. Animation* animation = Animation::createWithSpriteFrames(m_animFrames, 0.065); Animate* animate = Animate::create(animation); // Create a sprite using any one of the SpriteFrames // This is so we get a sprite of the correct dimensions. auto sprite = Sprite::createWithSpriteFrame(m_animFrames.at(0)); // Run and repeat the animation. sprite->setScale(3.0f); sprite->runAction(RepeatForever::create(animate)); sprite->setPosition(Vec2(player->getPosition().x, player->getPosition().y - 5)); this->addChild(sprite, 10); m_aiSprites.pushBack(sprite); //code for the particles that will be coloured orange auto size = Director::getInstance()->getWinSize(); auto m_emitter = ParticleExplosion::createWithTotalParticles(900); m_emitter->setDuration(-1); m_emitter->setGravity(Point(0, -240)); m_emitter->setAngle(0); m_emitter->setAngleVar(180); m_emitter->setRadialAccel(25); m_emitter->setRadialAccelVar(0); m_emitter->setTangentialAccel(10); m_emitter->setTangentialAccelVar(0); m_emitter->setPosVar(Point(1, 0)); m_emitter->setLife(0.25); m_emitter->setLifeVar(0.50); m_emitter->setStartSpin(0); m_emitter->setStartSpinVar(0); m_emitter->setEndSpin(0); m_emitter->setEndSpinVar(0); m_emitter->setStartColor(Color4F(212, 73, 0, 1)); m_emitter->setStartColorVar(Color4F(0, 0, 0, 0)); m_emitter->setEndColor(Color4F(212, 73, 0, 1)); m_emitter->setEndColorVar(Color4F(0, 0, 0, 0)); m_emitter->setStartSize(20.0f); m_emitter->setStartSizeVar(0); m_emitter->setEndSize(15.0f); m_emitter->setEndSizeVar(0); m_emitter->setEmissionRate(275); m_emitter->setPosition(Vec2(player->getPosition().x, player->getPosition().y - 15)); addChild(m_emitter, 10); }
void MagiciteWeatherEffectSnow::positive(cocos2d::Layer* layer) { auto snow = ParticleSnow::create(); snow->setTexture(Director::getInstance()->getTextureCache()->addImage("img\\Magicite\\Particle\\snow.png")); snow->setDuration(-1); snow->setGravity(Vec2(0.0f, -80.0f)); snow->setAngle(90.0f); snow->setAngleVar(360.0f); snow->setPosition(_range.x / 2, _range.y); snow->setPosVar(Vec2(_range.x / 2, 0)); snow->setStartSpin(30); snow->setStartSpinVar(60); snow->setEndSpin(60); snow->setEndSpinVar(60); snow->setEmissionRate(6); layer->addChild(snow); }
void TestScene::emit() { auto _emitter = ParticleSystemQuad::createWithTotalParticles(100); addChild(_emitter, 10); _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("images/test_lizi.png")); _emitter->setDuration(1.f); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(90); _emitter->setAngleVar(0); // speed of particles _emitter->setSpeed(260); _emitter->setSpeedVar(0); // radial _emitter->setRadialAccel(-260); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(00); _emitter->setTangentialAccelVar(0); // emitter position // _emitter->setPosition( Vec2(160,240) ); _emitter->setPosVar({2,10}); // life of particles _emitter->setLife(1); _emitter->setLifeVar(0); // spin of particles _emitter->setStartSpin(10000); _emitter->setStartSizeVar(360); _emitter->setEndSpin(0); _emitter->setEndSpinVar(360); // color of particles Color4F startColor(0.f, 0.5f, 0.f, 1.0f); _emitter->setStartColor(startColor); Color4F startColorVar(0.f, 0.1f, 0.f, 1.0f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.5f, 0.1f, 1.0f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(5.0f); _emitter->setStartSizeVar(1.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(true); //addChild(_emitter); _emitter->setPosition(genPos({0.5,0.5})); // _emitter->runAction(RotateBy::create(10.f, 1000)); }
void FloatingEffectManager::toast_cure(const cocos2d::Vec2& srcPos, const cocos2d::Vec2& desPos, DDElementType elementType, int level) { const float speed = 300; float len = (desPos-srcPos).length(); if (len == 0) { return; } auto _emitter = ParticleSystemQuad::createWithTotalParticles(500); _emitter->setAutoRemoveOnFinish(true); _layer->addChild(_emitter, 10); _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("images/test_lizi.png")); _emitter->setDuration(len/speed); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(vector2angel(desPos-srcPos)); _emitter->setAngleVar(0.5f* std::atan(DDConfig::battleCubeWidth()/len) * 180.f/3.1415926f); // speed of particles _emitter->setSpeed(speed); _emitter->setSpeedVar(0); // radial _emitter->setRadialAccel(-(speed/(2*len/speed))); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(00); _emitter->setTangentialAccelVar(0); // emitter position // _emitter->setPosition( Vec2(160,240) ); _emitter->setPosVar({0,0}); // life of particles _emitter->setLife(2*len/speed); _emitter->setLifeVar(0); // spin of particles _emitter->setStartSpin(720); _emitter->setStartSizeVar(360); _emitter->setEndSpin(0); _emitter->setEndSpinVar(360); // color of particles Color4F startColor(0.f, 0.5f, 0.f, 0.8f); _emitter->setStartColor(startColor); Color4F startColorVar(0.f, 0.1f, 0.f, 0.1f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.5f, 0.1f, 0.8f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.1f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(3.0f); _emitter->setStartSizeVar(1.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(true); _emitter->setPosition(srcPos); }
void FloatingEffectManager::toast_help_tail(const cocos2d::Vec2& srcPos, const cocos2d::Vec2& desPos, const cocos2d::Color4F& color) { const float time = 0.2; float len = (desPos-srcPos).length(); if (len == 0) { return; } const float speed = len/time; auto _emitter = ParticleSystemQuad::createWithTotalParticles(500); _emitter->setAutoRemoveOnFinish(true); _layer->addChild(_emitter, 10); _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("images/test_lizi.png")); _emitter->setDuration(time*5); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(vector2angel(srcPos-desPos)); _emitter->setAngleVar(3); // speed of particles _emitter->setSpeed(speed/5); _emitter->setSpeedVar(0); // radial _emitter->setRadialAccel(0); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(0); _emitter->setTangentialAccelVar(0); // emitter position // _emitter->setPosition( Vec2(160,240) ); _emitter->setPosVar({0,0}); // life of particles _emitter->setLife(0.2); _emitter->setLifeVar(0); // spin of particles _emitter->setStartSpin(720); _emitter->setStartSizeVar(360); _emitter->setEndSpin(0); _emitter->setEndSpinVar(360); // color of particles _emitter->setStartColor(color); Color4F startColorVar(0.f, 0.1f, 0.f, 0.1f); _emitter->setStartColorVar(startColorVar); _emitter->setEndColor(color); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.1f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(2.0f); _emitter->setStartSizeVar(1.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(true); _emitter->setPosition(srcPos); _emitter->runAction(MoveTo::create(0.1, desPos)); }
void BaseScene::putEmitter2(Vec2 pos){ m_emitterCreated ++; auto _emitter = ParticleSystemQuad::createWithTotalParticles(60); //_emitter->retain(); _emitter->setTag(m_emitterCreated); this->addChild(_emitter, 10000); ////_emitter->release(); // win32 : Remove this line _emitter->setTexture( Director::getInstance()->getTextureCache()->addImage("target.png") ); _emitter->setAngleVar(360); // duration _emitter->setDuration(-1); // gravity _emitter->setGravity(Vec2::ZERO); // speed of particles _emitter->setSpeed(160); _emitter->setSpeedVar(20); // radial _emitter->setRadialAccel(-30); _emitter->setRadialAccelVar(-10); // tagential _emitter->setTangentialAccel(30); _emitter->setTangentialAccelVar(0); // emitter position _emitter->setPosition(pos); _emitter->setPosVar(Vec2::ZERO); // life of particles _emitter->setLife(1.6f); _emitter->setLifeVar(0.6f); // spin of particles _emitter->setStartSpin(0); _emitter->setStartSpinVar(30); _emitter->setEndSpin(360); _emitter->setEndSpinVar(360); // color of particles _emitter->setStartColor(C4F_(E::P.C700, 0.5f)); _emitter->setStartColorVar(Color4F(0.1f, 0.1f, 0.1f, 0.2f)); _emitter->setEndColor(C4F_(E::P.C700, 0.15f)); _emitter->setEndColorVar(Color4F(0.1f, 0.1f, 0.1f, 0.15f)); // size, in pixels _emitter->setStartSize(32.0f); _emitter->setStartSizeVar(4.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(false); auto cbStopEmitter = CallFunc::create([this](){m_emitterStopped++; ((ParticleSystemQuad*)this->getChildByTag(m_emitterStopped))->stopSystem();}); auto cbRemoveEmitter = CallFunc::create([this](){m_emitterReleased++; this->getChildByTag(m_emitterReleased)->removeFromParentAndCleanup(true);}); _emitter->runAction(Sequence::create(DelayTime::create(0.3f), cbStopEmitter, DelayTime::create(2.0f), cbRemoveEmitter, nullptr)); }