过滤 SKSpriteNode 的最近邻居和所述节点的大小的困难(swift,spritekit)
Posted
技术标签:
【中文标题】过滤 SKSpriteNode 的最近邻居和所述节点的大小的困难(swift,spritekit)【英文标题】:Difficulty with filtering nearest neighbor for an SKSpriteNode and the size of said node(swift, spritekit) 【发布时间】:2016-05-01 01:31:25 【问题描述】:我有一个名为“user”的节点,它不断地通过 user.atlas 运行动画。它也是像素艺术 (18x50),我需要它来保持清晰和我的设计方式。如果我删除操作并添加
user.texture?.filteringMode = .Nearest
它看起来锐利、清晰和完美 - 但一旦我添加动作,纹理似乎不想遵循该规则。
还有!
图像被拉伸,即使我将大小设置为 (18 , 50),它仍然会垂直拉伸,并且像素长于宽度。无论动画如何,此问题都存在。
有人有什么想法吗?谢谢。
【问题讨论】:
因为你需要确保动画中的所有纹理也遵循规则 @Knight0fDragon 你能详细说明一下吗?我知道这就是原因,但我不确定如何将其应用于整个地图集。 您不将其应用于图集,而是将其应用于每个纹理,然后再将其添加到数组中 这看起来很旧。我猜没有多少人在他们的项目中使用 spritekit,或者他们不喜欢像素艺术 :) 【参考方案1】:你应该在添加到精灵之前设置纹理的过滤模式。
这是一个例子:
// 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))
【讨论】:
以上是关于过滤 SKSpriteNode 的最近邻居和所述节点的大小的困难(swift,spritekit)的主要内容,如果未能解决你的问题,请参考以下文章