2017-02-14 2 views
2

Ich versuche, Spielsprites eine Farbe blinken zu lassen, wenn sie beschädigt sind und die Farbe schnell wieder normal wird. Alle Sprites haben Bitmap-Texturen, aber sie sind nicht von dem Befehl betroffen. Ich habe versucht, das gleiche auf einem SpriteNode mit einem einfachen farbigen Hintergrund und es funktioniert, aber die Farbe verblasst in nicht aus:Das Einfärben eines Sprites mit einer Textur funktioniert nicht

//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) 

Nichts scheint zu passieren, und ich nehme diese Aktion nicht auf Texturen funktioniert. es auf einem einfachen Sprit ohne Textur Werke zu testen, aber über die Dauer schwindet in:

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) 

Dies funktioniert gut, aber verblasst von der ursprünglichen schwarz auf rot mehr als 2 Sekunden.

Weiß jemand wie: 1. Tint texturierte Sprites 2. eine Farbe sofort einstellen dann machen Sie es wieder normal zu verblassen.

Jede Hilfe wäre willkommen, vielen Dank. Kw

+1

im ersten Beispiel ... Sie haben nicht 'self.addChild (mySprite)' vor dem SKAction ... – TonyMkenu

+0

mehr ... in der Antwort, bitte – TonyMkenu

+0

Es ist nicht so. Ich kann Sprites auf dem Bildschirm sehen, aber sie reagieren nicht auf die Kolorierung, wenn sie Texturen haben. – Kwangle

Antwort

1

Die erste "Methode" es funktioniert, wenn Sie 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) 

fügen Sie es verblassen zurück:

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

Für SWIFT 3

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

und

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