【问题标题】:change background when a new game begins objective c新游戏开始时改变背景目标c
【发布时间】:2016-01-05 14:57:26
【问题描述】:

我正在使用 Sprite Kit 制作一个简单的游戏,我想在每次游戏开始时更改背景,例如,当一个新游戏开始时,背景是蓝色的,但是当英雄死亡并开始新游戏时,背景是黄色的。在此之前,我制作了img的SKTextureAtlas,当英雄死亡时会闪烁,也许我可以更改一些代码,这样它就可以满足我的需求? 这是我的代码示例:

    SKTextureAtlas *atlas =[SKTextureAtlas atlasNamed:@"back"];
    SKTexture *back0 = [atlas textureNamed:@"back0@2x"];
    SKTexture *back1 = [atlas textureNamed:@"back1@2x"];
    SKTexture *back2 = [atlas textureNamed:@"back2@2x"];
    SKTexture *back3 = [atlas textureNamed:@"back3@2x"];
  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 在游戏中提供的原始颜色是个好主意吗?

【问题讨论】:

  • 您是否尝试使用预定义的颜色集来随机化背景颜色,或者没有预定义的颜色并且在随机化时允许所有颜色?或者您正在尝试随机化背景图像(更改纹理)?如果您的图像只是单色,则无需为此使用纹理。只需更改 backgroundColor 属性。
  • @Whirlwind 那里只有预定义的一组颜色,但是是的,我想用图像而不是颜色设置背景,图像是单色的,但是 Sprite 套件不提供我需要的那种颜色跨度>
  • 你错了。您可以创建任何您想要的颜色。您只需为红色、绿色、蓝色和 alpha 分量提供正确的值。让我为你写一个例子。
  • @Whirlwind 是的,如果你这样做就好了

标签: objective-c sprite-kit


【解决方案1】:

如果您已经预定义了一组颜色,那么您必须使用您最喜欢的图像编辑器来找出所需颜色的每个组件(红色、绿色、蓝色、alpha)。因此,例如,如果您打开 Photoshop,并使用它的颜色选择器工具,您最终会看到类似

R:123,B:234,G: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];
}

【讨论】:

  • 谢谢!我不知道我能做到。
猜你喜欢
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多