2014-02-08 65 views
0

這裏是SKScene構造的源代碼:SKSpriteKit混合目的地阿爾法

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這應該引起目的地阿爾法是在混合後0.0。 我需要幫助才能得到它或者它不能按預期工作的原因? 在此先感謝

回答

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?

+0

作物節點存在問題。如果我想保持sprite1,我需要一個掩碼,除了sprite2覆蓋的區域外,所有像素都具有非零的alpha。我可以製作這樣的圖像,問題是sprite2可以通過用戶觸摸來移動,並且它的軌道必須是透明的並且具有場景的顏色。在每一幀生成圖像會導致幀率問題。也許我應該使用CGLayer? – user1668604

+0

有混合模式會影響阿爾法?如果我通過OpenGL來完成,那就沒問題了。 – user1668604