使用 SpriteKit 缩放 SkSpriteNodes
Posted
技术标签:
【中文标题】使用 SpriteKit 缩放 SkSpriteNodes【英文标题】:Scaling of SkSpriteNodes with SpriteKit 【发布时间】:2014-11-30 19:22:56 【问题描述】:我正在开发一个游戏,我有各种可以缩放的节点。
根据设备(ipad/iphone),它们的最大尺寸在 50-128 之间(println("\(size)")
的输出),所以我假设最大尺寸应该是 3x128,对吧?
缩放时会发生以下情况:
初始大小 (0,0) 最终尺寸 (max,max) -- 这些是上面提到的尺寸我正在使用这样的 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、...) - 有没有使用矢量图的方法? 您认为该场景的最佳纹理尺寸是多少? 我是否正确地进行了缩放/初始化,还是应该做一些不同的事情来避免像素化?【问题讨论】:
【参考方案1】:如果你使用 png 文件就可以了。不支持矢量格式。如果你想使用它们,你必须将其转换为像 png 这样的位图图像格式。
就最佳纹理尺寸而言,这确实是一个反复试验以及权衡取舍的问题。
放大时,您会看到像素化。多少取决于您使用的比例因子、实际纹理本身以及您拥有的任何其他变换(例如旋转)。在确定要使用的纹理大小时,您基本上是在平衡内存与视觉质量。例如,如果您没有很多纹理,则很有可能使用较大的图像。另请注意,按比例缩小也有其缺点,例如混叠效果。
您可能想要尝试做的是确定您认为“最佳”或最常用的尺寸。并使用该尺寸作为您的 x1 比例尺寸。
游戏开发就是平衡资源/性能和用户体验。您需要尝试为您的游戏找到最佳权衡。
顺便说一句,我发现这句话有点令人困惑:
取决于设备(ipad/iphone),它们的最大尺寸介于 50-128(println(“(size)”)的输出),所以我假设最大尺寸 应该是 3x128 吧?
我不太确定你想说什么。
【讨论】:
我正在确定屏幕比例的最大尺寸,以使游戏在所有 ios 设备上运行流畅和平衡。这意味着尺寸会因所使用的设备而有所不同。以上是关于使用 SpriteKit 缩放 SkSpriteNodes的主要内容,如果未能解决你的问题,请参考以下文章
带有SpriteKit的iOS通用设备应用程序,如何为所有视图缩放节点?
Sprite Kit:有没有办法禁用缩放模式并编码你想要发生的事情