【发布时间】:2017-02-14 20:10:00
【问题描述】:
我正在尝试让游戏精灵在损坏时闪烁颜色,并且颜色会迅速恢复正常。所有的精灵都有位图纹理,但它们不受命令的影响。我在具有纯色背景的 SpriteNode 上尝试了相同的操作,它确实有效,但颜色淡出 in 而不是淡出:
//defines sprite
let mySprite = SKSpriteNode(imageNamed: "myTexture")
//defines action to colourise sprite over half a second
let tintSprite = SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 1, duration: 0.5)
mySprite.runAction(tintSprite)
似乎什么都没有发生,我认为此操作不适用于纹理。在没有纹理的简单精灵上测试它,但在持续时间内淡入:
let test = SKSpriteNode.init(color: SKColor.blackColor(), size: CGSizeMake(80, 80))
test.position.x = 100
test.position.y = 200
let tintTest = SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 1, duration: 5)
test.runAction(tintTest)
self.addChild(test)
这很好用,但会在 2 秒内从原来的黑色淡化为红色。
有谁知道如何: 1. 着色纹理精灵 2. 立即设置颜色,然后使其淡出恢复正常。
任何帮助将不胜感激,非常感谢。 千瓦
【问题讨论】:
-
在第一个示例中...在 SKAction 之前您没有
self.addChild(mySprite)... -
更多...请在答案中
-
不是这样的。我可以在屏幕上看到精灵,但如果它们有纹理,它们不会响应着色操作。
-
我做了更多的测试,你是对的——它确实适用于简单的 SKSpriteNodes,即使它们有纹理。不幸的是,我的精灵是 SKSpriteNode 的子类,它似乎干扰了这种能力。我会假设子类继承了 SKSpriteNode 的能力,但也许该动作只影响作为 SKSpriteNode 直接子级的纹理。
-
你的纹理是什么颜色的?
标签: ios swift sprite-kit skspritenode