zoukankan      html  css  js  c++  java
  • 用CCRenderTexture和BlendFunc制作游戏教学时使用的黑色覆盖层

      游戏快要完成了,准备做教学。

      我们的教学是在整个界面上盖一层灰色图片,然后把提示点击的按钮部分亮出来,也就是在一块黑色图片上,按需求扣空一小部分。如图,把武器部分扣空,那么在其它地方又会扣空其它部分,而且要可以扣空多个不规则图形。

    方法:

    先计算出要扣空部分的位置和大小,这个很容易,应为它已经在你的界面上了,用->getpositon,->getContentSize,再转换一下世界坐标就可以得到。

    然后用混合模式,把灰色图片对应的位置扣空就行了。

    哎、我比较懒、、、直接贴代码了。。。

    CCSprite* createLightMaskSprite(CCSprite* base,vector<CCSprite*> lightNodes)
    {
    	int baseWidth = base->getContentSize().width;
    	int baseHeight = base->getContentSize().height;
    
    	CCRenderTexture* rt = CCRenderTexture::create(baseWidth, baseHeight);//创建纹理渲染范围
    	ccBlendFunc blendFunc;
    	blendFunc.src = GL_DST_ALPHA;	//表示使用目标颜色的alpha值来作为因子
    	blendFunc.dst = GL_ZERO;		//不使用目标颜色
    
         base->setPosition(ccp(baseWidth/2.0f,baseHeight/2.0f)); rt->begin(); base->visit(); //注意,这里需要先绘制A,遮罩图片 int nodeNum = lightNodes.size(); for (int i=0;i<nodeNum;i++) { lightNodes[i]->setBlendFunc(blendFunc); //注意渲染顺序,先渲染的为的精灵的颜色为目标颜色,后渲染的精灵的颜色为源颜色。 lightNodes[i]->visit(); } rt->end(); return CCSprite::createWithTexture(rt->getSprite()->getTexture()); }

     

  • 相关阅读:
    hdoj_1711Number Sequence
    心痛
    2012国信蓝桥初赛试题
    poj_2524Ubiquitous Religions
    poj_2406Power Strings && poj_1961Period && poj_2752Seek the Name, Seek the Fame(KMP)
    POJ并查集小结
    并查集模版
    hdoj_1232畅通工程 && hdoj_1272小希的迷宫 && hdoj_1213How Many Tables && Is It A Tree?
    poj_1611The Suspects
    KMP模版
  • 原文地址:https://www.cnblogs.com/songcf/p/3459830.html
Copyright © 2011-2022 走看看