本文整理汇总了C++中setPosVar函数的典型用法代码示例。如果您正苦于以下问题:C++ setPosVar函数的具体用法?C++ setPosVar怎么用?C++ setPosVar使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了setPosVar函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Crash
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);
}
示例2: getChildByTag
void ParticlePerformTest4::doTest()
{
auto s = Director::getInstance()->getWinSize();
auto particleSystem = (ParticleSystem*) getChildByTag(kTagParticleSystem);
// duration
particleSystem->setDuration(-1);
// gravity
particleSystem->setGravity(Vec2(0,-90));
// angle
particleSystem->setAngle(90);
particleSystem->setAngleVar(0);
// radial
particleSystem->setRadialAccel(0);
particleSystem->setRadialAccelVar(0);
// speed of particles
particleSystem->setSpeed(180);
particleSystem->setSpeedVar(50);
// emitter position
particleSystem->setPosition(Vec2(s.width/2, 100));
particleSystem->setPosVar(Vec2(s.width/2,0));
// life of particles
particleSystem->setLife(2.0f);
particleSystem->setLifeVar(1);
// emits per frame
particleSystem->setEmissionRate(particleSystem->getTotalParticles() / particleSystem->getLife());
// color of particles
Color4F startColor(0.5f, 0.5f, 0.5f, 1.0f);
particleSystem->setStartColor(startColor);
Color4F startColorVar(0.5f, 0.5f, 0.5f, 1.0f);
particleSystem->setStartColorVar(startColorVar);
Color4F endColor(0.1f, 0.1f, 0.1f, 0.2f);
particleSystem->setEndColor(endColor);
Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f);
particleSystem->setEndColorVar(endColorVar);
// size, in pixels
particleSystem->setEndSize(64.0f);
particleSystem->setStartSize(64.0f);
particleSystem->setEndSizeVar(0);
particleSystem->setStartSizeVar(0);
// additive
particleSystem->setBlendAdditive(false);
}
示例3: positive
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);
}
示例4: setEmitterMode
bool ParticleSmoke::initWithTotalParticles(unsigned int numberOfParticles)
{
if( ParticleSystemQuad::initWithTotalParticles(numberOfParticles) )
{
// duration
_duration = DURATION_INFINITY;
// Emitter mode: Gravity Mode
setEmitterMode(Mode::GRAVITY);
// Gravity Mode: gravity
setGravity(Point(0,0));
// Gravity Mode: radial acceleration
setRadialAccel(0);
setRadialAccelVar(0);
// Gravity Mode: speed of particles
setSpeed(25);
setSpeedVar(10);
// angle
_angle = 90;
_angleVar = 5;
// emitter position
Size winSize = Director::getInstance()->getWinSize();
this->setPosition(Point(winSize.width/2, 0));
setPosVar(Point(20, 0));
// life of particles
_life = 4;
_lifeVar = 1;
// size, in pixels
_startSize = 60.0f;
_startSizeVar = 10.0f;
_endSize = START_SIZE_EQUAL_TO_END_SIZE;
// emits per frame
_emissionRate = _totalParticles/_life;
// color of particles
_startColor.r = 0.8f;
_startColor.g = 0.8f;
_startColor.b = 0.8f;
_startColor.a = 1.0f;
_startColorVar.r = 0.02f;
_startColorVar.g = 0.02f;
_startColorVar.b = 0.02f;
_startColorVar.a = 0.0f;
_endColor.r = 0.0f;
_endColor.g = 0.0f;
_endColor.b = 0.0f;
_endColor.a = 1.0f;
_endColorVar.r = 0.0f;
_endColorVar.g = 0.0f;
_endColorVar.b = 0.0f;
_endColorVar.a = 0.0f;
Texture2D* texture = getDefaultTexture();
if (texture != NULL)
{
setTexture(texture);
}
// additive
this->setBlendAdditive(false);
return true;
}
return false;
}
示例5: addChild
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));
}
示例6: setEmitterMode
bool CCParticleSmoke::initWithTotalParticles(unsigned int numberOfParticles)
{
if( CCParticleSystemQuad::initWithTotalParticles(numberOfParticles) )
{
// duration
m_fDuration = kCCParticleDurationInfinity;
// Emitter mode: Gravity Mode
setEmitterMode(kCCParticleModeGravity);
// Gravity Mode: gravity
setGravity(ccp(0,0));
// Gravity Mode: radial acceleration
setRadialAccel(0);
setRadialAccelVar(0);
// Gravity Mode: speed of particles
setSpeed(25);
setSpeedVar(10);
// angle
m_fAngle = 90;
m_fAngleVar = 5;
// emitter position
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
this->setPosition(ccp(winSize.width/2, 0));
setPosVar(ccp(20, 0));
// life of particles
m_fLife = 4;
m_fLifeVar = 1;
// size, in pixels
m_fStartSize = 60.0f;
m_fStartSizeVar = 10.0f;
m_fEndSize = kCCParticleStartSizeEqualToEndSize;
// emits per frame
m_fEmissionRate = m_uTotalParticles/m_fLife;
// color of particles
m_tStartColor.r = 0.8f;
m_tStartColor.g = 0.8f;
m_tStartColor.b = 0.8f;
m_tStartColor.a = 1.0f;
m_tStartColorVar.r = 0.02f;
m_tStartColorVar.g = 0.02f;
m_tStartColorVar.b = 0.02f;
m_tStartColorVar.a = 0.0f;
m_tEndColor.r = 0.0f;
m_tEndColor.g = 0.0f;
m_tEndColor.b = 0.0f;
m_tEndColor.a = 1.0f;
m_tEndColorVar.r = 0.0f;
m_tEndColorVar.g = 0.0f;
m_tEndColorVar.b = 0.0f;
m_tEndColorVar.a = 0.0f;
CCTexture2D* pTexture = getDefaultTexture();
if (pTexture != NULL)
{
setTexture(pTexture);
}
// additive
this->setBlendAdditive(false);
return true;
}
return false;
}
示例7: setEmitterMode
bool ParticleHitEmitter::initWithTotalParticles(unsigned int numberOfPartiles)
{
if (CCParticleSystemQuad::initWithTotalParticles(numberOfPartiles))
{
// duration
m_fDuration = 0.1f;
setEmitterMode(kCCParticleModeGravity);
// Gravity Mode: gravity
setGravity(ccp(0, 0));
// Gravity Mode: speed of particles
setSpeed(0);
setSpeedVar(0);
// Gravity Mode: radial
setRadialAccel(0);
setRadialAccelVar(0);
// Gravity Mode: tangential
setTangentialAccel(0);
setTangentialAccelVar(0);
// angle
m_fAngle = 90;
m_fAngleVar = 360;
// emitter position
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
this->setPosition(ccp(winSize.width / 2, winSize.height / 2));
setPosVar(CCPointZero);
// life of particles
m_fLife = 0.1f;
m_fLifeVar = 0;
// size, in pixels
m_fStartSize = 100;
m_fStartSizeVar = 0.0f;
m_fEndSize = 300;
// emits per second
m_fEmissionRate = m_uTotalParticles / m_fDuration;
//m_uTotalParticles = 50;
// color of particles
m_tStartColor.r = 1.0f;
m_tStartColor.g = 1.0f;
m_tStartColor.b = 1.0f;
m_tStartColor.a = 1.0f;
m_tStartColorVar.r = 0.0f;
m_tStartColorVar.g = 0.0f;
m_tStartColorVar.b = 0.0f;
m_tStartColorVar.a = 0.0f;
m_tEndColor.r = 1.0f;
m_tEndColor.g = 1.0f;
m_tEndColor.b = 1.0f;
m_tEndColor.a = 0.0f;
m_tEndColorVar.r = 0.0f;
m_tEndColorVar.g = 0.0f;
m_tEndColorVar.b = 0.0f;
m_tEndColorVar.a = 0.0f;
setTexture(CCTextureCache::sharedTextureCache()->addImage("./Data/fire.png"));//.pvr");
// additive
this->setBlendAdditive(true);
mLayer->addChild(this);
return true;
}
return false;
}
示例8: toast_cure
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);
}
示例9: toast_help_tail
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));
}
示例10: addParticalToHead
Head_ParticalEffect
void addParticalToHead(Node* node)
{
Vec2 pos[4];
pos[0] = Vec2(5, 75);
pos[1] = Vec2(75, 75);
pos[2] = Vec2(75, 5);
pos[3] = Vec2(5, 5);
for (int i = 0; i < 2; i++)
{
auto partNode = ParticleSystemQuad::createWithTotalParticles(60);
partNode->setTexture(TextureCache::getInstance()->addImage("GameUI/CommonUI/fire.png"));//设置粒子图
partNode->setDuration(-1);//发射时长
// life of particles
partNode->setLife(0.5f);//粒子生命
partNode->setLifeVar(0.1f);
partNode->setEmissionRate(partNode->getTotalParticles() / partNode->getLife());//发射器发射频率
partNode->setPositionType(ParticleSystem::PositionType::FREE);//设置发射器的跟随模式
// color of particles
partNode->setStartColor(ccc4f(0.76f, 0.25f, 0.12f, 1.0f));//起始颜色
partNode->setStartColorVar(ccc4f(0.1f, 0.1f, 0.1f, 0.0f));
partNode->setEndColor(ccc4f(1.0f, 1.0f, 1.0f, 1.0f));//结束颜色
partNode->setEndColorVar(ccc4f(0.1f, 0.1f, 0.1f, 0.1f));
// size, in pixels
partNode->setStartSize(15);//粒子大小
partNode->setStartSizeVar(3);
partNode->setEndSize(0);
partNode->setEndSizeVar(3);
// angle
partNode->setAngle(0);//发射器角度
partNode->setAngleVar(0);
// speed of particles
partNode->setSpeed(0);//粒子速度
partNode->setSpeedVar(0);
// emitter position
partNode->setPosVar(ccp(0, 0));//发射器位置变化
partNode->setBlendAdditive(true);
node->addChild(partNode);
partNode->setTag(PARTICALTAG);
auto move0 = MoveTo::create(1.f, pos[0]);
auto move1 = MoveTo::create(1.f, pos[1]);
auto move2 = MoveTo::create(1.f, pos[2]);
auto move3 = MoveTo::create(1.f, pos[3]);
if (i == 0)
{
partNode->setPosition(pos[0]);
partNode->runAction(RepeatForever::create(Sequence::create(move1, move2, move3, move0, nullptr)));
}
else
{
partNode->setPosition(pos[2]);
partNode->runAction(RepeatForever::create(Sequence::create(move3, move0, move1, move2, nullptr)));
}
}
}
示例11: setEmitterMode
KDbool CCParticleSnow::initWithTotalParticles ( KDuint uNumberOfParticles )
{
if ( CCParticleSystemQuad::initWithTotalParticles ( uNumberOfParticles ) )
{
// duration
m_fDuration = kCCParticleDurationInfinity;
// set gravity mode.
setEmitterMode ( kCCParticleModeGravity );
// Gravity Mode: gravity
setGravity ( ccp ( 0, -1 ) );
// Gravity Mode: speed of particles
setSpeed ( 5 );
setSpeedVar ( 1 );
// Gravity Mode: radial
setRadialAccel ( 0 );
setRadialAccelVar ( 1 );
// Gravity mode: tangential
setTangentialAccel ( 0 );
setTangentialAccelVar ( 1 );
// emitter position
const CCSize& tWinSize = CCDirector::sharedDirector ( )->getWinSize ( );
this->setPosition ( ccp ( tWinSize.cx / 2, tWinSize.cy + 10 ) );
setPosVar ( ccp ( tWinSize.cx / 2, 0 ) );
// angle
m_fAngle = -90;
m_fAngleVar = 5;
// life of particles
m_fLife = 45;
m_fLifeVar = 15;
// size, in pixels
m_fStartSize = 10.0f;
m_fStartSizeVar = 5.0f;
m_fEndSize = kCCParticleStartSizeEqualToEndSize;
// emits per second
m_fEmissionRate = 10;
// color of particles
m_tStartColor.r = 1.0f;
m_tStartColor.g = 1.0f;
m_tStartColor.b = 1.0f;
m_tStartColor.a = 1.0f;
m_tStartColorVar.r = 0.0f;
m_tStartColorVar.g = 0.0f;
m_tStartColorVar.b = 0.0f;
m_tStartColorVar.a = 0.0f;
m_tEndColor.r = 1.0f;
m_tEndColor.g = 1.0f;
m_tEndColor.b = 1.0f;
m_tEndColor.a = 0.0f;
m_tEndColorVar.r = 0.0f;
m_tEndColorVar.g = 0.0f;
m_tEndColorVar.b = 0.0f;
m_tEndColorVar.a = 0.0f;
CCTexture2D* pTexture = getDefaultTexture ( );
if ( pTexture )
{
setTexture ( pTexture );
}
// additive
this->setBlendAdditive ( KD_FALSE );
return KD_TRUE;
}
return KD_FALSE;
}
示例12:
void BaseScene::putEmitter3(Vec2 pos){
m_emitterCreated ++;
auto _emitter = ParticleSystemQuad::createWithTotalParticles(20);
//_emitter->retain();
_emitter->setTag(m_emitterCreated);
this->addChild(_emitter, 10000);
////_emitter->release(); // win32 : Remove this line
_emitter->setTexture( Director::getInstance()->getTextureCache()->addImage("ui/ball_outer.png") );
_emitter->setAngleVar(360);
// duration
_emitter->setDuration(-1);
// gravity
_emitter->setGravity(Vec2::ZERO);
// speed of particles
_emitter->setSpeed(320);
_emitter->setSpeedVar(80);
// 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.8f);
// color of particles
_emitter->setStartColor(C4F_(E::P.C500, 0.4f));
_emitter->setStartColorVar(Color4F(0.1f, 0.1f, 0.1f, 0.3f));
_emitter->setEndColor(C4F_(E::P.C300, 0.3f));
_emitter->setEndColorVar(Color4F(0.1f, 0.1f, 0.1f, 0.2f));
// size, in pixels
_emitter->setStartSize(32.0f);
_emitter->setStartSizeVar(8.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));
}
示例13: setEmitterMode
bool ParticleSpiral::initWithTotalParticles(int numberOfParticles)
{
if( ParticleSystemQuad::initWithTotalParticles(numberOfParticles) )
{
// duration
_duration = DURATION_INFINITY;
// Gravity Mode
setEmitterMode(Mode::GRAVITY);
// Gravity Mode: gravity
setGravity(Vec2(0,0));
// Gravity Mode: speed of particles
setSpeed(150);
setSpeedVar(0);
// Gravity Mode: radial
setRadialAccel(-380);
setRadialAccelVar(0);
// Gravity Mode: tangential
setTangentialAccel(45);
setTangentialAccelVar(0);
// angle
_angle = 90;
_angleVar = 0;
// emitter position
Size winSize = Director::getInstance()->getWinSize();
this->setPosition(winSize.width/2, winSize.height/2);
setPosVar(Vec2::ZERO);
// life of particles
_life = 12;
_lifeVar = 0;
// size, in pixels
_startSize = 20.0f;
_startSizeVar = 0.0f;
_endSize = START_SIZE_EQUAL_TO_END_SIZE;
// emits per second
_emissionRate = _totalParticles/_life;
// color of particles
_startColor.r = 0.5f;
_startColor.g = 0.5f;
_startColor.b = 0.5f;
_startColor.a = 1.0f;
_startColorVar.r = 0.5f;
_startColorVar.g = 0.5f;
_startColorVar.b = 0.5f;
_startColorVar.a = 0.0f;
_endColor.r = 0.5f;
_endColor.g = 0.5f;
_endColor.b = 0.5f;
_endColor.a = 1.0f;
_endColorVar.r = 0.5f;
_endColorVar.g = 0.5f;
_endColorVar.b = 0.5f;
_endColorVar.a = 0.0f;
Texture2D* texture = getDefaultTexture();
if (texture != nullptr)
{
setTexture(texture);
}
// additive
this->setBlendAdditive(false);
return true;
}
return false;
}