你如何在没有抗锯齿的情况下扩展SKSpirteNode?

我试图缩放一个SKSpriteNode对象没有平滑/抗锯齿(我正在使用像素艺术,所以它看起来更好的像素化)。

我需要设置一个属性来执行此操作吗? 这是我用来渲染精灵的代码:

SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"objects"]; SKTexture *f1 = [atlas textureNamed:@"hero_1.png"]; SKSpriteNode *hero = [SKSpriteNode spriteNodeWithTexture:f1]; [self addChild: hero]; hero.scale = 6.0f; 

图像正确缩放但模糊/平滑。 这是hero_1.png 在这里输入图像说明

尝试,

 SKTexture *texture = [SKTexture textureWithImageNamed:@"Fak4o"]; texture.filteringMode = SKTextureFilteringNearest; SKSpriteNode *newHero = [SKSpriteNode spriteNodeWithTexture:texture]; newHero.position = CGPointMake(200, 200); [newHero setScale:50]; [self addChild:newHero]; 

SKTextureFilteringNearest

每个像素都使用纹理中的最近点绘制。 这种模式更快,但结果往往像素化。

迅速:

 sprite.texture!.filteringMode = .Nearest 

请注意,如果您创buildSKSpriteNode而不是SKTexture ,则可以像下例中那样设置SKTextureFilteringNearest

 SKSpriteNode *asteroid = [SKSpriteNode spriteNodeWithImageNamed:@"o1"]; asteroid.size = CGSizeMake(36, 24); asteroid.position = CGPointMake(startX, startY); asteroid.name = @"obstacle"; // >>> asteroid.texture.filteringMode = SKTextureFilteringNearest; // <<< [self addChild:asteroid]; 

尝试这个:

 hero.xscale = 6.0f; hero.yscale = 6.0f;