如何给spine骨骼动画挂载粒子特效

来源:互联网 发布:数据统计方法 编辑:程序博客网 时间:2024/06/04 17:40

目的是要把粒子挂载到骨骼动画的某个一个部件上,其实最主要是找对位置。

预览效果,左手红火,右手蓝火,很炫吧:)

//init

复制代码
bool HelloWorld::init(){    //////////////////////////////    // 1. super init first    if ( !Layer::init() )    {        return false;    }    CCSkeletonAnimation* skeletonNode = CCSkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas");    skeletonNode->setAnimation("walk", true);    skeletonNode->setPosition(ccp(300,0));    //skeletonNode->debugSlots = true;    skeletonNode->debugBones = true;    skeletonNode->timeScale = 0.5f;    addChild(skeletonNode,0,1);        ParticleSun* _emitter1 = ParticleSun::create();    _emitter1->setTexture( TextureCache::getInstance()->addImage("fire.png") );    addChild(_emitter1, 10, 2);    ParticleGalaxy* _emitter2 = ParticleGalaxy::create();    _emitter2->setTexture( TextureCache::getInstance()->addImage("fire.png") );    skeletonNode->addChild(_emitter2, 10, 20);    scheduleUpdate();    return true;}
复制代码

 

//update

复制代码
void HelloWorld::update (float deltaTime) {    CCSkeletonAnimation* skeletonNode = (CCSkeletonAnimation*)getChildByTag(1);        Bone* pBone = skeletonNode->findBone("left hand");    CCPoint pt = skeletonNode->convertToWorldSpace(ccp(pBone->worldX,pBone->worldY));//粒子1是添加在Scene上的 所以需要坐标转换一下    ParticleSun* _emitter1 = (ParticleSun*)getChildByTag(2);    _emitter1->setPosition(pt);    pBone = skeletonNode->findBone("right hand");    pt = ccp(pBone->worldX,pBone->worldY);//粒子2直接挂到骨骼动画上,所以不需要转换坐标    ParticleGalaxy* _emitter2 = (ParticleGalaxy*)skeletonNode->getChildByTag(20);    _emitter2->setPosition(pt);}
原创粉丝点击