анимация частиц cocos2dx v3

#c #cocos2d-x-3.0

#c #cocos2d-x-3.0

Вопрос:

Привет, я новичок в cocos2dx v3, и я нахожу, что у него очень чистый api, но очень плохая документация. я пытаюсь загрузить некоторую анимацию частиц из http://particle2dx.com / . оттуда я получаю файл .plist, как его открыть и загрузить анимацию. что касается анимации листа спрайтов из файла .plist, я знаю, как это сделать, но в этом случае я заранее знаю имена фреймов и их количество. но как воспроизвести анимацию частиц из файла .plist.

вот что я делаю для воспроизведения из файла .plist, как я могу его изменить

 auto cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("run.plist");
Vector<SpriteFrame*> frames = Vector<SpriteFrame*>();


frames.pushBack(cache->getSpriteFrameByName("0001.png"));
frames.pushBack(cache->getSpriteFrameByName("0002.png"));
frames.pushBack(cache->getSpriteFrameByName("0003.png"));
frames.pushBack(cache->getSpriteFrameByName("0004.png"));
frames.pushBack(cache->getSpriteFrameByName("0005.png"));
frames.pushBack(cache->getSpriteFrameByName("0006.png"));
Animation* anim = cocos2d::Animation::createWithSpriteFrames(frames, 0.1f, 1);

Animate* anim_action = cocos2d::Animate::create(anim);
auto sprite = Sprite::create("boy1.png");
//sprite is already added to scene elsewhere and ready to go
sprite->runAction(RepeatForever::create(anim_action));
sprite->setPosition(Vec2(visibleSize.width/2   origin.x, visibleSize.height/2   origin.y));
this->addChild(sprite, 2);
 

Ответ №1:

вы ищете анимацию частиц и пытаетесь использовать анимацию кадров в своем коде .. если вы хотите использовать файл .plist, созданный из particle2dx.com тогда вы можете сделать это

первый на веб-сайте http://particle2dx.com / -> перейдите по ссылке экспорта -> нажмите на кнопку загрузки с надписью «png contained» .. теперь у вас будет загружен файл plist, теперь используйте этот код для применения анимации частиц

 ParticleSystemQuad *particle_Tap=ParticleSystemQuad::create("run.plist");
particle_Tap->setPosition(point);
particle_Tap->setScale(FACTOR_XY);
this->addChild(particle_Tap,100);
 

Надеюсь, это поможет ..:)