缩放 SpriteKit 游戏
Posted
技术标签:
【中文标题】缩放 SpriteKit 游戏【英文标题】:Scaling SpriteKit game 【发布时间】:2016-07-02 17:18:15 【问题描述】:使图像适合蓝色框的最佳方式是什么?游戏是基于像素的,所以我也想保持像素化的外观。
【问题讨论】:
...使用 Aspect Fit 缩放模式? 我在 self.view 上调用它吗?这会扩展所有节点吗? 【参考方案1】:根据实际的 Swift 2.2 可以找到:
@available(ios 7.0, *)
public enum SKSceneScaleMode : Int
case Fill /* Scale the SKScene to fill the entire SKView. */
case AspectFill /* Scale the SKScene to fill the SKView while preserving the scene's aspect ratio. Some cropping may occur if the view has a different aspect ratio. */
case AspectFit /* Scale the SKScene to fit within the SKView while preserving the scene's aspect ratio. Some letterboxing may occur if the view has a different aspect ratio. */
case ResizeFill /* Modify the SKScene's actual size to exactly match the SKView. */
例如,您可以在 viewController 中执行此操作:
override func viewDidLoad()
super.viewDidLoad()
if let scene = PreloadScene(fileNamed:"PreloadScene")
// Configure the view.
let skView = self.view as! SKView
...
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFit
...
skView.presentScene(scene)
或者从一个SKScene
转换到另一个SKScene
:
let transition = SKTransition.doorsOpenVerticalWithDuration(0.5)
let nextScene = MainScene(size: self.scene!.size)
nextScene.scaleMode = .AspectFit
self.scene?.view?.presentScene(nextScene, transition: transition)
【讨论】:
由于某种原因,AspectFit 没有给我任何信箱,看起来与 AspectFill 完全相同。 尝试在您的问题中添加一些代码以更好地理解您的问题。【参考方案2】:您可以将您的精灵缩放到蓝色框。
func fitToBlueBox(节点:SKSpriteNode,blueBox:SKSpriteNode) let actualScale = min(blueBox.size.width/node.size.width, blueBox.size.height/node.size.height) 节点.setScale(actualScale);【讨论】:
以上是关于缩放 SpriteKit 游戏的主要内容,如果未能解决你的问题,请参考以下文章
带有SpriteKit的iOS通用设备应用程序,如何为所有视图缩放节点?
我怎样才能通过像 Cocos2D 这样的 SpriteKit 倾斜/剪切精灵?
暂停 SpriteKit 游戏 - UIApplicationWillResignActive 与 UIApplicationDidBecomeActive?