【问题标题】:How to mask sprites in cocos2d by the alpha of a gradient?如何通过渐变的alpha来掩盖cocos2d中的精灵?
【发布时间】:2012-08-22 10:35:23
【问题描述】:

我想让 CCNode(可能是 CCLayer、CCSprite 等)可以使用着色器屏蔽其所有子节点,以便在它们接近节点边界时逐渐屏蔽它们,而无需直接修改它们的不透明度值。例如,菜单可能如下所示:

在这种情况下,遮罩将是一个渐变,可能看起来像这样:

【问题讨论】:

    标签: objective-c opengl-es cocos2d-iphone mask


    【解决方案1】:

    Ray Wenderlich's website 上提供了创建遮罩精灵的基本教程,但我不确定它是否也允许您遮罩子节点。如果没有,那么您可能必须使用CCRenderTexture,将子节点绘制到纹理,然后最后使用教程中创建的遮罩节点对其进行遮罩。

    【讨论】:

    • 我看过那个教程,但它没有回答我的问题。
    • GoldenJoe,如果没有渲染目标或对所有子级实施渐变 alpha,您将无法解决您的任务。
    • 我不太清楚 cocos2d 是如何渲染的,但不是每个节点都只是一个带有纹理的四边形吗?如果子节点渲染到父节点,那么制作父节点应该可以工作。不过,我现在不知道该怎么做……
    【解决方案2】:

    我知道这可能不是您想要的机制,但我最近想要一个以循环方式变化的渐变 alpha。我有一些文字会围绕精灵旋转,我只希望它在圆圈顶部时可见。

    对我来说最简单的方法是创建一个圆形带子,其中带子在底部是完全“黑色”,在顶部逐渐变回完全透明。

    通过将其放在 z 顺序中,我得到了我想要的效果。我想你可以通过这种方式达到同样的效果

    要查看它的实际效果,请查看我的应用程序的主菜单,Claustrophobic。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多