Scaling of SkSpriteNodes with SpriteKit



im 我正在开发的一款游戏,我有各种缩放节点。

根据设备(iPad/iPhone(的不同,它们的最大尺寸在50-128之间(输出为println("(size)")(,所以我认为最大尺寸应该是3x128,对吧?

缩放时,会发生以下情况:

  • 初始大小 (0,0(
  • 最终尺寸(最大,最大( -- 这些是上面提到的尺寸

我正在使用SKAction进行缩放,如下所示:

let imageName = NameGenerator.defaultGenerator.generateAssetName(properties: properties)
let texture = SKTexture(imageNamed: imageName)
let node = SKSpriteNode(texture: texture)
let initialSize = CGSizeMake(1, 1)
let scaleFactor = max / initialSize.width
let actionScale = SKAction.scaleTo(scale, duration: duration)
node.runAction(scale)

到目前为止一切顺利。 该应用程序运行顺利,一切正常,但是

  • 节点在缩放动画期间高度像素化

我的资产目前仅以@3x大小存储,300x300px

问题

  • 什么是最佳纹理格式(PNG,SVG,...( - 有没有办法使用矢量图像?
  • 您认为这款 Szenario 的最佳纹理尺寸是多少?
  • 我是否正确地进行了缩放/初始化,还是应该做一些不同的事情来避免像素化?

如果你使用 png 文件,你会没事的。不支持矢量格式。如果要使用它们,则必须将其转换为位图图像格式,例如png。

就最佳纹理尺寸而言,这实际上将是一个反复试验以及权衡权衡的问题。

放大时,您将看到像素化。具体程度取决于您使用的比例因子、实际纹理本身以及您拥有的任何其他变换(例如旋转(。在确定要使用的纹理大小时,您基本上是在平衡内存与视觉质量。例如,如果您没有很多纹理,则很可能可以使用较大的图像。另请注意,缩小也有其缺点,例如混叠效果。

您可能想尝试做的是确定您认为"最佳"或最常用的大小。并将该大小用作 x1 缩放大小。

游戏开发就是平衡资源/性能和用户体验的行为。您需要尝试为您的游戏找到最佳权衡。

顺便说一句,我发现这个陈述有点令人困惑:

根据设备(iPad/iPhone(的不同,它们的最大大小介于 50-128(println("(size("(的输出(,所以我是最大尺寸 应该是 3x128,对吧?

我不太确定你想说什么。

最新更新