2017-02-14 15 views
2

Я стараюсь, чтобы игровые спрайты вспыхивали цветом, когда они были повреждены, и цвет быстро исчезает до нормального уровня. Все спрайты имеют растровые текстуры, но команда не влияет на них. Я попробовал то же самое на SpriteNode с простым цветным фоном, и это делает работу, но цвет исчезает в не из:Цветной спрайт с текстурой не работает

//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. Установите цвет мгновенно, затем заставьте его нормализовать.

Любая помощь будет оценена, большое спасибо. Kw

+1

в первом примере ... вы не имеете 'self.addChild (MySprite)' перед SKAction ... подробнее – TonyMkenu

+0

... в ответ, пожалуйста – TonyMkenu

+0

Это не так. Я вижу спрайты на экране, но они не реагируют на действие раскраски, если у них есть текстуры. – Kwangle

ответ

1

Первый "метод" это работает, если вы добавите self.addChild(mySprite)

//defines sprite 
let mySprite = SKSpriteNode(imageNamed: "myTexture") 
self.addChild(mySprite) // missing 
//defines action to colourise sprite over half a second 
let tintSprite = SKAction.colorizeWithColor(SKColor.redColor(), colorBlendFactor: 1, duration: 0.5) 
mySprite.runAction(tintSprite) 

Чтобы выцветает его обратно:

let tintSpriteBack = SKAction.colorizeWithColorBlendFactor(0, duration: 0.5) 
mySprite.runAction(tintSpriteBack) 

Для СВИФТ 3

let tintSprite = SKAction.colorize(with: SKColor.red, colorBlendFactor: 1, duration: 0.5) 
mySprite.run(tintSprite) 

и

let tintSpriteBack = SKAction.colorize(withColorBlendFactor: 0, duration: 0.5) 
mySprite?.run(tintSpriteBack)