【问题标题】:Sprite Kit/ SKShapeNode: excluding overlap of shapesSprite Kit/ SKShapeNode:不包括形状的重叠
【发布时间】:2013-12-05 21:44:05
【问题描述】:

我正在尝试通过使用两个重叠的圆圈来创建新月效果。我的想法是我可以从另一个中减去一个,但我在执行它时遇到了麻烦。

这是我对路径的编码方式(第二条路径与第一条路径重叠了大约一半):

SKShapeNode *baseMoon = [[SKShapeNode alloc ]init];
CGMutablePathRef moon = CGPathCreateMutable();

CGPathAddArc(moon, NULL, 0, 0, 50, 0, M_PI*2, YES);
CGPathCloseSubpath(moon);
CGPathAddArc(moon, NULL, 0, 50, 50, 0, M_PI*2, YES);
CGPathCloseSubpath(moon);

baseMoon.path = moon;
CGPathRelease(moon);
baseMoon.lineWidth = size;

baseMoon.strokeColor = [SKColor whiteColor];

有人知道如何从第一条路径中减去第二条路径吗?我已经研究过使用 CGContextClip,但这需要 UIGraphicsGetCurrentContext(XCode 警告我可能会导致不稳定)所以我一直在寻找另一种解决方案。

【问题讨论】:

    标签: ios sprite-kit cgpath skshapenode


    【解决方案1】:

    也许您应该尝试手动绘制路径。 Ray Wenderlich 有一个great tutorial on this topic

    另一种方法可能是使用一些 CoreImage 过滤器 - 我记得,精灵套件确实支持一些 CoreImage 功能(请参阅 SKEffectNode)。在核心图像中有一个类似减法的过滤器,您使用两张图像,一张是蒙版。但我想这不是你想要的。

    【讨论】:

      【解决方案2】:

      您应该使用SKCropNode。额外的字符,以便我可以提交。

      【讨论】:

      • 问题是我正在尝试创建一个面具;新月形状将用于掩盖月亮纹理。好主意,但我认为这对这里没有帮助。
      猜你喜欢
      • 2014-08-24
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多