我知道还有其他几个帖子,但我的情况有点具体,我还没看过这个。
我在游戏中有一个球形精灵,每当我点击它时,我想添加一个相同精灵的着色版本,但效果为fadeIn和fadeOut。
给你一个示例代码:
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)
现在,到目前为止......我甚至看不到touchEffect sprite着色(如果我将alpha设置为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 :(得分:0)
我发布这个答案是因为它太大而无法发表评论,如果需要,我可以在这里发布代码。
我只是重读你的东西3次,你正在与白色混合,你期望得到什么颜色?如果你混合蓝色和白色,你得到蓝色,如果你混合紫色和蓝色,你会得到蓝色。如果你混合蓝色和灰色,你会得到一个更深的蓝色。这是所有百分比乘法。我不相信你会得到混合模式来挑选颜色。工作原理是它需要每个像素的颜色,并在像素上将其分解为R
,G
,B
,然后它会采用您的颜色,然后将其分解为RGB(我们称之为CR
CG
CB
)。数学在每个像素级别上变为(R
* CR
,G
* CG
,B
* CB
)。
你正在做(R
* 1
,G
* 1
,B
* 1
),这是({{1} },R
,G
)
如果你想为你的精灵着色,那么你需要你的精灵是一个灰度图像,只有当你希望它们保持这种颜色时才使用颜色(在某种程度上,因为混合仍然适用于它们,你需要弄清楚你希望它如何混合的数学计算。