2016-01-05 55 views
1

Iam使用Sprite Kit製作簡單遊戲,並且我希望每次遊戲開始時都改變背景,例如,當新遊戲開始時,背景是藍色,但是當英雄死亡並且開始新的遊戲背景是黃色的。在此之前,我製作了IMG的SKTextureAtlas,當英雄死亡時閃現,也許我可以更改一些代碼,以適應我的需求? 這裏我的代碼示例:當新遊戲開始時更改背景客觀化c

SKTextureAtlas *atlas =[SKTextureAtlas atlasNamed:@"back"]; 
    SKTexture *back0 = [atlas textureNamed:@"[email protected]"]; 
    SKTexture *back1 = [atlas textureNamed:@"[email protected]"]; 
    SKTexture *back2 = [atlas textureNamed:@"[email protected]"]; 
    SKTexture *back3 = [atlas textureNamed:@"[email protected]"]; 
    NSArray *backatlas = @[back0, back1, back2, back3]; 
    SKAction *backatlasanimation = [SKAction animateWithTextures:backatlas timePerFrame:0.1]; 
    SKAction *wait = [SKAction waitForDuration:0.1]; 
    SKAction *backaction = [SKAction sequence:@[wait, backatlasanimation]]; 
    [background runAction:backaction]; 
    [self addChild:background]; 

嗯,我做我的研究,並提出了這一點:

-(NSarray *)background{ 
if(!_background){ 
_background = @[[SKColor redColor], [SKColor yellowColor], [SKColor grayColor]]; 
} 
return _background ; 
} 
//// Add some random, so color change. 
-(SKColor *) randomColorBack { 
int index = arc4random() % [self.backgrounds count]; 
return self.backgrounds[index]; 
} 
...... 
background.color = [self randomColor]; 
background.colorBlendFactor = 1.0; 

但如何用圖片做了,是不是好主意,使用原裝Xcode在遊戲中提供什麼顏色?

+0

你是不是想通過使用預先定義的顏色,隨機背景顏色,或者是沒有預定義的顏色和各種顏色隨機化時允許嗎?或者你試圖隨機化背景圖片(改變紋理)?如果你的圖像只是單色,那麼就不需要使用紋理。只需更改backgroundColor屬性。 – Whirlwind

+0

@Whirlwind那裏只有預定義的一組顏色,但是,我想設置背景圖像不是顏色,圖像是單色的,但Sprite套件不提供那種顏色,我需要 – artG

+0

你錯了。你可以創建你想要的任何顏色。您只需爲紅色,綠色,藍色和alpha組件提供正確的值。讓我爲你寫一個例子。 – Whirlwind

回答

1

如果您有預定義的一組顏色,那麼您必須使用您最喜歡的圖像編輯器來查找所需顏色的每個組件(紅色,綠色,藍色,alpha)。所以,如果你打開Photoshop例如,並使用其顏色選擇器工具,你會最終看到像

[R:123,:234,:125

這些代表所選顏色的每種顏色分量的值。

爲了製作具有指定顏色組件的顏色,您可以使用一些UIColor類方法,根據文檔, + colorWithRed:green:blue:alpha:就是完美之選。它接受從0到1的值的話,這是你應該如何建立你的顏色:

UIColor* customColor = [UIColor colorWithRed:(120/255.0f) green:(23/255.0f) blue:(32/255.0f) alpha:1.0f]; 

不是真的需要,但here你可以看到它接受從0到255之間的值的簡便方法,所以一切都可能是一個比較容易使用:

就是這樣。只需用這些預定義的顏色填充一些數組,然後選擇一個隨機數。在要隨機顏色(沒有預先定義的顏色)的情況下,使用此:

-(UIColor*)getRandomColor{ 

    CGFloat red = arc4random_uniform(255)/255.0f; 
    CGFloat green = arc4random_uniform(255)/255.0f; 
    CGFloat blue = arc4random_uniform(255)/255.0f; 

    return [UIColor colorWithRed:red green: green blue:blue alpha:1.0f]; 
} 
+0

謝謝!我不知道我能做到這一點。 – artG