SpriteKit Sprites没有正确缩放

时间:2016-12-06 18:45:35

标签: ios sprite-kit swift3

我的SpriteKit游戏中的精灵尽管缩放得当,但在我的场景中渲染得非常小。我一直在使用类似大小的精灵跟踪一些不同的教程,他们在模拟器中缩放得很好。以下是一些代码段和屏幕截图。例如,屏幕右上角的暂停按钮非常小,但资产的实际分辨率是标准尺寸。

GameScene.swift

private let pauseTex = SKTexture(imageNamed: "PauseButton")    

...

private func setupPause() {
    pauseBtn.texture = pauseTex
    pauseBtn.size = pauseTex.size()
    pauseBtn.anchorPoint = CGPoint(x: 1.0, y: 1.0)
    pauseBtn.position = CGPoint(x: size.width, y: size.height)
    pauseBtn.zPosition = Layer.Foreground.rawValue
    worldNode.addChild(pauseBtn)Btn)

    ...
}

GameVC.swift

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    ...

    if let skView = self.view as? SKView {
        if skView.scene == nil {

            let aspectRatio = view.bounds.size.height / view.bounds.size.width
            let scene = MenuScene(size: CGSize(width: 750, height: 750 * aspectRatio))

            scene.scaleMode = .aspectFill
            skView.ignoresSiblingOrder = true

            ...
        }
    }
}

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

基本上这里发生的事情是迈克对场景大小与屏幕尺寸混淆了。他认为,由于精灵是32像素,它应该占据iPhone SE屏幕的10%,因为它有1倍宽度320(原来它是640 [2x])但实际上,他的场景是750像素宽,所以它只显示在5%。 他将他的场景大小改为375x667(iPhone 6非视网膜分辨率)以正确使用视网膜图形,现在一切都应该为他调整。

他现在唯一会遇到的问题是在iPad设备上裁剪。他只需要在安全区工作。

答案 1 :(得分:0)

由于不同设备之间的分辨率差异,您的资产规模并不总能反映屏幕上所需的尺寸(如果SKScene scaleMode设置为{ {1}})。如果您想要精灵的特定尺寸,则需要将resizeFill' SKNode属性设置为所需的值。

您的方法会是什么样子:

size