我基本上一直在包装它,直到它起作用。最终解决方案似乎是创建一个 SKEffectNode 并将我的 SKShapeNode 添加为 SKEffectNode 的子级。但这还不够。我还必须将 SKEffectNode 包装在 SKSpriteNode 中。最后,添加 SKSpriteNode 作为 SKCropNode 的 maskNode。请参阅下面的代码。我还有其他可能对解决方案有帮助的设置。
SKCropNode *cropNode = [[SKCropNode alloc] init];
SKEffectNode*rasterEffectNode = [SKEffectNode node];
[rasterEffectNode addChild:ballShape];
rasterEffectNode.shouldRasterize = true;
ballShape.lineWidth = 0;
ballShape.antialiased = true;
[ballShape setStrokeColor:[SKColor clearColor]];
ballShape.fillColor = [SKColor blackColor];
SKSpriteNode*spriteWrapperFix = [SKSpriteNode node];
[spriteWrapperFix addChild:rasterEffectNode];
[cropNode setMaskNode:spriteWrapperFix];
[cropNode addChild:sprite];
[container addChild:cropNode];