【问题标题】:SKSpriteKit blending destination alphaSpriteKit 混合目标 alpha
【发布时间】:2014-02-09 06:09:44
【问题描述】:

这里是 SKScene 构造函数中的源代码:

self.backgroundColor = [SKColor greenColor];
SKSpriteNode* sprite1 = [[SKSpriteNode alloc] initWithColor: [SKColor colorWithRed: 0.5 green:0.5 blue:0.5 alpha:1.0] size: CGSizeMake(500.0, 500.0)];
sprite1.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild: sprite1];

SKSpriteNode* sprite2 = [[SKSpriteNode alloc] initWithColor: [SKColor colorWithRed: 1.0 green:1.0 blue:1.0 alpha: 1.0] size: CGSizeMake(100.0, 100.0)];
sprite2.blendMode = SKBlendModeSubtract;
[sprite1 addChild: sprite2];

我希望在 sprite2 覆盖的区域上获得绿色,因为我设置了混合模式 SKBlendModeSubtract,这应该导致混合后目标 alpha 为 0.0。 我需要帮助才能获得它或它不能按预期工作的原因? 提前致谢

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    减去混合模式会减去颜色值,而不是 Alpha 值。您看到的交叉点应该是黑色的,因为交叉点的颜色是 (1,0,0)-(1,0,0)=(0,0,0)。

    您正在寻找的是图层蒙版。 SKCropNode 这样做,但可能不是你想要的方式。您可能想查看以下问题之一以获得一些想法:Animate masked image in SpriteKit (SKCropNode)Is it possible to use a circle (SKShapeNode) as a mask in Sprite Kit?

    【讨论】:

    • 裁剪节点有问题。如果我想保留 sprite1,我需要一个蒙版,其中所有像素的 alpha 值都非零,除了 sprite2 覆盖的区域。我可以制作这样的图像,问题是 sprite2 可以通过用户触摸来移动,并且它的轨迹必须是透明的并且具有场景的颜色。在每一帧生成图像会带来帧速率问题。也许我应该使用 CGLayer?
    • 是否有会影响 alpha 的混合模式?如果我通过OpenGL来做就可以了。
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2011-12-14
    • 2010-11-20
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多