cocos2d-x颜色混合模式完成光照效果

来源:互联网 发布:淘宝优惠券哪里领 编辑:程序博客网 时间:2024/05/21 11:04

使用Cocosd-x3.2的颜色混合功能和裁剪功能完成光照效果,简单易用,效果图如下:
这里写图片描述
代码:

//底图,光照图(一般是有透明度的白色图) 光移动的时间,循环次数Node * HelloWorld::createFlashNode(const std::string &spName, const std::string &splashName, float duration,int loops){    auto clNode = ClippingNode::create();    auto stecil = Sprite::create(spName);    clNode -> setStencil(stecil);    clNode -> setAlphaThreshold(0.1);    auto star = Sprite::create(spName);    clNode -> addChild(star);    auto splash = Sprite::create(splashName);    star -> addChild(splash);     //关键代码    splash -> setBlendFunc({GL_DST_COLOR,GL_ONE});//    splash -> setPosition(splash->getContentSize().width/2-star->getContentSize().width,splash->getContentSize().height/2);    auto place = Place::create(Vec2(splash->getContentSize().width/2-star->getContentSize().width,splash->getContentSize().height/2));    auto moto = MoveTo::create(duration, Vec2(splash->getContentSize().width/2+star->getContentSize().width,splash->getContentSize().height/2));    auto seq = Sequence::create(place,moto, NULL);    ActionInterval *repeat = nullptr;    if (loops!=-1)    {        repeat = Repeat::create(seq, loops);    }    else    {        repeat = RepeatForever::create(seq);    }    splash -> runAction(repeat);    return clNode;}//调用auto no = createFlashNode("xingxing.png", "light.png", 2);this -> addChild(no); no -> setPosition(300,300);
0 0