2013-10-05 4 views
11

Ich versuche ein SKSpriteNode Objekt ohne Glättung/Anti-Aliasing zu skalieren (Ich benutze Pixel-Art, damit es besser pixelig aussieht).Wie skaliert man SKSpirteNode ohne Anti-Aliasing?

Gibt es eine Eigenschaft, die ich einstellen muss, um dies zu tun? Dies ist der Code, den ich das Sprite machen bin mit:

SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"objects"]; 
SKTexture *f1 = [atlas textureNamed:@"hero_1.png"]; 

SKSpriteNode *hero = [SKSpriteNode spriteNodeWithTexture:f1]; 
[self addChild: hero]; 

hero.scale = 6.0f; 

Das Bild wird richtig skaliert, sondern verschwommen/geglättet. Dies ist held_1.png enter image description here.

Antwort

17

Versuchen,

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

Jedes Pixel den nächsten Punkt in der Textur gezeichnet wird. Dieser Modus ist schneller, aber die Ergebnisse sind oft verpixelt.

Swift:

sprite.texture!.filteringMode = .Nearest 
+0

es ist kein prope der Skrspritenode. –

+0

können Sie fügen Sie Sprite zu Frage, damit ich ein paar Dinge ausprobieren kann – DogCoffee

+0

Ich fügte hinzu, die Frage –

3

Nur eine Notiz, wenn Sie ein SKSpriteNode statt SKTexture erstellen, können Sie die SKTextureFilteringNearest wie im folgenden Beispiel setzen:

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]; 
0

versuchen, dieses:

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