Swift:SpriteKit不能以正确的大小渲染精灵

时间:2014-07-12 17:09:54

标签: swift sprite-kit xcode6 skspritenode

编辑3:嗯,我已经解决了这个问题。看来,使用iOS 8,您现在可以从scene.sks文件加载场景。所以在这种情况下,游戏正在加载一个分辨率为1024x768的.sks文件。这就是图像无法正确显示的原因。将ViewController更改为在iOS 8之前工作(这里解释为:Swift and Spritekit won't run on device running iOS 7.1)似乎解决了这个问题。感谢所有试图帮助我的人。 :d

我正在使用最新的Xcode测试版在SpriteKit和Swift中创建一个游戏(好吧,我已经在Obj-C中移植了一个游戏)。我有一个问题,就是SpriteKit似乎没有正确渲染我的精灵,使它们的尺寸小于它应该的尺寸。如果我提供原生iPhone分辨率的背景,请使用以下代码添加它:

    let background = SKSpriteNode(imageNamed: backgroundName)
    background.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
    self.addChild(background)

产生这个:

SKFail

精灵图像小于它应该的尺寸,因为图像是640x1136。我错过了什么吗?

编辑:嗯,似乎图像渲染的尺寸减小了约50%。使它们大50%显示正确,但它们的尺寸错误(大50%)......

编辑2:嗯,这里证明了我使用的图像处于正确的分辨率:enter image description here

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。您必须只声明一次纹理,然后在每个精灵中加载它。如果你 的println( “精灵:\(精灵)”) 你的精灵,你会看到纹理缺失。

class test : SKSpriteNode
{
    let textureImage = SKTexture(imageNamed:"spriteImage")


    func load sprites() {

        sprite = SKSpriteNode(texture: textureImage )
    }
}

答案 1 :(得分:1)

要做到这一点,你需要做的就是这个(在didMoveToView中):

self.size = view.frame.size // makes the size of the scene the same size as the frame, idk
let background = SKSpriteNode(imageNamed: "background") // if you actually need this tho
background.size = self.frame.size

答案 2 :(得分:0)

确保您的场景没有缩放或以某种奇怪的方式设置。我使用最新的xcode / spritekit进行的测试可以处理大小的图像。