2016-09-04 64 views
-1

我知道還有幾個關於這方面的其他文章,但我的情況有點特別,我還沒有看到這個。SKSpriteNode沒有響應設置顏色和blendModeFactor(SpriteKit&Swift)

我在我的遊戲中有一個球形的精靈,每當我點擊它時,我想添加一個同樣精靈的彩色版本,但是具有淡入淡出效果和淡入淡出效果。

要給你一個例子代碼:

self.ball = SKSpriteNode(imageNamed: "ball") 
self.ball.position = CGPoint(x: midX, y: midY) 
self.ball.zPosition = 1 
self.ball.size = CGSize(width: 100, height: 100) 

self.touchEffect = SKSpriteNode(imageNamed: "ball") 
self.touchEffect.position = CGPoint(x: 0, y: 0) 
self.touchEffect.zPosition = 2 
self.touchEffect.size = CGSize(width: 100, height: 100) 
self.touchEffect.color = UIColor.whiteColor() 
self.touchEffect.blendColorFactor = 1 
self.touchEffect.alpha = 0 

self.ball.addChild(self.touchEffect) 
self.addChild(self.ball) 

現在,到這一點......我甚至不能看到colorised的touchEffect精靈(如果我把阿爾法爲1),但同樣的原始精靈的顏色。爲什麼是這樣?

在我的touchesBegan做這樣的事:

func showTapEffect() { 
    let fadeIn = SKAction.fadeInWithDuration(0.3) 
    let fadeOut = SKAction.fadeOutWithDuration(0.3) 
    let sequence = SKAction.sequence([fadeIn,fadeOut]) 

    self.touchEffect.runAction(sequence) 
} 

我還用它在不同的場景我非常相同的遊戲中,和它的工作。不知道爲什麼這個獨特的案例沒有。任何提示?如果你需要更多的示例代碼,請告訴我,不是我當前代碼的複製粘貼,我只是從我的內存中輸入它,所以你可能會在那裏看到一個錯字錯誤。但代碼非常相似。

(和我的精靈是不是深色或黑色)

在此先感謝。

+0

你試過用除白色以外的顏色? – 0x141E

+0

位置是相對的,使得觸摸效果CGPoint.zero(midX * 2意味着球的觸摸效果是關閉屏幕的) – Knight0fDragon

+0

是的,我嘗試了redColor,但沒有工作@ 0x141E – msqar

回答

0

我發佈這個答案,因爲它太大了評論,我可以在這裏張貼代碼,如果需要的話。

我剛剛重讀了你的東西,比如3次,你與白色混合,你期望得到什麼顏色?如果你混合藍色和白色,你會得到藍色,如果你混合紫色和藍色,你會得到藍色。如果你混合藍色和灰色,你會得到一個更深的藍色。這是百分比乘法。我不相信你會從混合模式中選擇顏色。它的工作原理是它需要每一個像素的顏色,並且在像素,其分成RGB,那麼它需要你的膚色,和休息,截至到R G B(可以稱之爲CRCGCB)。數學成爲(R * CR,G * CG,B * CB)。

你正在做的(R * 1G * 1B * 1),這是(RGB

如果你想上色你的精靈,那麼你需要你的精靈是一個灰色的只有當你想讓它們保持這種顏色時才使用顏色(在某種程度上,因爲混合仍然適用於它們,你需要弄清楚你想如何混合的算法)

相關問題