我試圖讓一個精靈閃爍白色,就像它受到傷害時一樣。這將涉及通過SKAction控制某些參數。首先,我嘗試將SKCropNode與SKShapeNode結合使用,但我不認爲我完全理解它是如何工作的,因爲它沒有做任何事情。我的第二次嘗試是爲精靈着色,但我發現當你將一個精靈着色成白色時,它會顯示它的原始顏色。我確定着色器可以工作,但我沒有太多經驗。有任何想法嗎?使一個SKSpriteNode閃白色
[編輯]
好,對這個話題讀一百萬以上的網站後,我碰到下面的SO question,其中說,SKCropNodes只有SKSpriteNodes工作(掩蔽等)來了。所以我更新了代碼並允許我的精靈變成白色。我認爲我可以運行一個SKAction來關閉白色SKSpriteNode上的alpha來顯示掩蔽節點,但這隻會讓整個sprite消失。所以我想也許我可以將原始圖像添加到SKCropNode,但是然後白色SKSpriteNode消失。我決定創建一個SKAction來調暗白色SKSpriteNode,然後將原始節點添加到SKCropNode。它有效,但有沒有更好的方法?
SKSpriteNode *prod = [SKSpriteNode spriteNodeWithImageNamed:@"some image"];
[prod setSize:CGSizeMake(prod.frame.size.width*0.2, prod.frame.size.height*0.2)];
prod.zPosition = -1;
SKSpriteNode *mask = [SKSpriteNode spriteNodeWithImageNamed:@"some image"];
[mask setSize:CGSizeMake(mask.frame.size.width*0.2, mask.frame.size.height*0.2)];
mask.zPosition = 1;
//mask.position = CGPointMake(300, 300);
SKSpriteNode *shape = [SKSpriteNode spriteNodeWithColor:[NSColor whiteColor] size:CGSizeMake(800, 600)];
shape.zPosition = 2;
SKCropNode *cropNode = [SKCropNode node];
cropNode.maskNode = mask;
[cropNode addChild:shape];
//[cropNode addChild:prod];
cropNode.position = CGPointMake(300, 300);
[self addChild:cropNode];
SKAction *fadeOut = [SKAction fadeAlphaTo:0 duration:0.1];
[shape runAction:fadeOut completion:^{
[cropNode addChild:prod];
}];
彩色化色彩的動作不會幫助這裏因爲事實是如何工作的混合:http://stackoverflow.com/q/20715177/3402095嘗試撥打命中狀態圖像(c完全白色的圖像)。這將是最簡單的解決方案。然後在一定的延遲之後交換紋理。或者,如果您需要動畫,請使用兩個精靈並快速淡入/跳出撞擊狀態紋理... – Whirlwind
有沒有辦法用SKCropNode做到這一點?這將是理想的,這樣我就不必爲每個精靈有兩個不同的版本。 – 02fentym
不能說什麼是高性能或優雅的解決方案,但它可能是可行的。如果你更新你的問題到目前爲止你已經嘗試過,可能有人可以幫助... – Whirlwind