【问题标题】:cocos2d 2.1 and HKTMXLayer opacity problemscocos2d 2.1 和 HKTMXLayer 不透明度问题
【发布时间】:2013-04-06 21:17:41
【问题描述】:

我正在使用 coco2d 2.1 构建游戏,目前我开始使用 HKTMXTiledMap 扩展。

总的来说,这个扩展很棒,任何使用平铺地图(尤其是大地图)制作游戏的人都应该检查一下。但我需要能够在关卡过程中更改图层的不透明度。

我尝试过更改着色器和绘图方法,但一定有一些我遗漏的东西。

我将 HKTMXLayer.m 的第 97 行更改为:self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTextureColor];,但随后图层显示为全黑。

有人给我任何提示吗?谢谢!

【问题讨论】:

  • 您是否创建了自己的绘图方法?如果是,请确保在绘制的顶部正确初始化着色器的属性。
  • 任何使用平铺地图制作游戏的人都应该真的查看 KoboldTouch:koboldtouch.com/x/cYBq 无法抗拒。 :) 哦,当然改变图层不透明度在 KoboldTouch 中肯定有效。
  • @YvesLeBorg 我正在尝试将 HKTMXLayer 类从 here 更改。
  • @LearnCocos2D 我会检查一下!只在使用 cocos2d 开发一年后更改框架是不切实际的。哈哈哈

标签: cocos2d-iphone


【解决方案1】:

不确定您的整体上下文,但同一类的绘制方法(第 465 行)仅设置“位置”属性:考虑到该类派生自“CCNode”,这是正常的。

您正在设置的着色器(通常用于精灵)需要一个顶点属性以及一个颜色属性。有关示例,请参见 CCSprite (draw) 中的代码。也许还有另一种方法可以满足您的需求(“为什么”要将 Node 派生类的着色器更改为通常用于 CCSprite/纹理的着色器)。

【讨论】:

    【解决方案2】:

    修复已发布here

    除了将shader改为kCCShader_PositionTextureColor外,还需要在绘制图层时传递color属性。

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    glVertexAttrib4f(kCCVertexAttrib_Color, color_.r/255., color_.g/255., color_.b/255., opacity_/255.);
    

    glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, NULL);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2014-06-25
      • 2011-06-04
      • 2013-06-16
      • 2013-11-02
      相关资源
      最近更新 更多