2016-05-01 6 views
1

"user"という名前のノードがあり、user.atlasを通じて常にアニメーションを実行します。それはまた、ピクセルアート(18x50)であり、私はそれを鋭く見て、それをどのようにデザインする必要があります。私はアクションを削除し、SKSpriteNodeとそのノードのサイズ(swift、spritekit)の最も近いネイバーをフィルタリングするのが難しい

user.texture?.filteringMode = .Nearest 

を追加した場合には、シャープでクリアなと完璧に見える - しかし、すぐに私は、アクションを追加すると、テクスチャがそのルールに従ってくださいしていないようです。

また、

サイズを(18、50)に設定しても画像が伸びていますが、画像は縦に引き伸ばされており、ピクセルは幅よりも長くなっています。この問題は、アニメーションに関係なく持続します。

誰もが考えている?ありがとう。

+0

あなたは手の込んだことができることを確認してアニメーション内のすべてのテクスチャがKnight0fDragon @ – Knight0fDragon

+0

同様のルールに従わせる必要があるため?私はそれが理由だと知っていますが、私はそれをアトラス全体にどのように適用するのか分かりません。 –

+1

アトラスに適用しないで、配列に追加する前に各テクスチャに適用します。 – Knight0fDragon

答えて

0

スプライトに追加する前に、テクスチャのフィルタリングモードを設定する必要があります。ここで

は一例です:

// this creates a walking character with endless loop 

// create textures of the sprite 
let frame1 : SKTexture = SKTexture.init(imageNamed: "walk-left-1") 
let frame2 : SKTexture = SKTexture.init(imageNamed: "walk-left-2") 
let frame3 : SKTexture = SKTexture.init(imageNamed: "walk-left-3") 
let frame4 : SKTexture = SKTexture.init(imageNamed: "walk-left-4") 

// set filter for pixelart 
frame1.filteringMode = .nearest 
frame2.filteringMode = .nearest 
frame3.filteringMode = .nearest 
frame4.filteringMode = .nearest 

// create the textures array 
let walkFrames = [frame1, frame2, frame3, frame4] 

// create sprite and add to the scene 
let sprite = SKSpriteNode.init(texture: walkFrames[0]) 
sprite.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 
self.addChild(sprite) 

// create the walking animation 
let animate = SKAction.animate(with: walkFrames, timePerFrame: 0.2) 

//OPTIONAL: make sprite bigger if you need 
sprite.setScale(4) 

// start walking 
sprite.run(SKAction.repeatForever(animate)) 
関連する問題