zoukankan      html  css  js  c++  java
  • cocos2d-x颜色混合模式完成光照效果

    使用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);
  • 相关阅读:
    Map集合
    Collections 工具类
    LinkedList 集合
    List集合
    Iterator迭代器
    Collection集合
    时间日期类
    一看就懂!速写docker 容器数据库备份脚本
    Nginx 配置之HTTPS和WSS那些你不知道的事!
    https 证书认证/颁发/秒级认证无烦恼
  • 原文地址:https://www.cnblogs.com/skyxu123/p/9543814.html
Copyright © 2011-2022 走看看