平铺背景图片

时间:2016-07-12 00:40:00

标签: swift sprite-kit

尝试为自上而下的游戏创建平铺的背景图像。 SKScene是8000,8000而不是创建几个非常大的精灵,我试图平铺它以提高性能。

 var coverageSize = CGSizeMake(8000,8000); 
    var textureSize = CGRectMake(0, 0, 100, 100); 
    var backgroundCGImage = [UIImage imageNamed:@"bg"].CGImage; //this line returns several errors.
    UIGraphicsBeginImageContext(CGSizeMake(coverageSize.width, coverageSize.height));
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextDrawTiledImage(context, textureSize, backgroundCGImage);
    UIImage *tiledBackground = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    SKTexture *backgroundTexture = [SKTexture textureWithCGImage:tiledBackground.CGImage];
    SKSpriteNode *backgroundTiles = [SKSpriteNode spriteNodeWithTexture:backgroundTexture];
    backgroundTiles.yScale = -1; 
    backgroundTiles.position = CGPointMake(0,0);
    [self addChild:backgroundTiles];

1 个答案:

答案 0 :(得分:1)

执行切片的一种方法是创建用于绘制切片的节点

您将适合屏幕的图块数量绘制到此特殊图块

使用:

 var texture = self.view!.textureFromNode(drawingTile, crop: CGRectMake(-column.width, -row.height, self.frame.width + column.width , self.frame.height + row.height));

将此节点转换为纹理 现在从绘图节点中删除所有节点

使用此纹理将新节点添加到绘图节点。

我们现在有一个节点的背景。

当您需要滚动时,移动绘图节点,然后绘制缺少的1行和1列瓷砖。只有当你需要你的绘图模式已经移动太多以至于你在屏幕上有一个间隙来填充时才这样做。再次使用上面的代码来创建一个新的绘图模式纹理。冲洗,重复