11

我正在尝试在不进行平滑/抗锯齿的情况下缩放 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 在此处输入图像描述

4

3 回答 3

17

尝试,

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
于 2013-10-05T01:26:50.907 回答
3

请注意,如果您创建一个SKSpriteNode而不是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];
于 2014-06-02T00:26:33.480 回答
0

尝试这个:

hero.xscale = 6.0f;
hero.yscale = 6.0f;
于 2014-08-11T07:26:51.840 回答