过滤 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)的主要内容,如果未能解决你的问题,请参考以下文章

推荐算法的基于协同过滤的推荐

最近邻居图中第 k 个邻居的奇怪距离

推荐系统笔记: 基于邻居的协同过滤问题 中的降维

使用 morton 代码查找最近的邻居

RIP协议 之 路由汇总缺省路由认证路由控制过滤路由被动接口单播邻居 和 更新源检测

根据最近距离找到最佳唯一邻居对