如何使用SpriteKit将背景图像放置得比场景更宽?

时间:2017-05-07 08:22:43

标签: ios swift sprite-kit

我需要什么

我想知道如何将 SKSpriteNode 作为 SKTexture 3,240 x 1,920像素的背景图片放在 SKScene ,而我在 Swift 3 上使用 SpriteKit 保持宽高比。

为什么我需要它

这背后的想法是让图像比场景更宽,以便在玩家移动时实现视差效果。

我尝试了什么

以下代码放置图像,但将其缩小以适合水平突破其宽高比的场景:

this

Scene screenshot with its width ratio broken

下面的代码变体放置了图像,但是在这种情况下仅在垂直方向上挤压它的纵横比:

obj

Scene screenshot with its height ratio broken

如果我未设置let texture = SKTexture(imageNamed: "Background") let background = SKSpriteNode(texture: texture) if let view = self.view { background.size = view.bounds.size } background.anchorPoint = CGPoint.zero addChild(background) 属性,则场景中不会显示任何图像。

如果我使用 1,080 x 1,920像素 SKTexture 尝试相同的代码,它可以正常工作。

此外,场景let texture = SKTexture(imageNamed: "Background") let background = SKSpriteNode(texture: texture) if let view = self.view { background.size.height = view.bounds.size.height } background.anchorPoint = CGPoint.zero addChild(background) 属性设置为以下代码行:

background.size

感谢

非常感谢任何形式的帮助。

非常感谢你的时间。

干杯, 费德里科。

1 个答案:

答案 0 :(得分:0)

如果您的背景图片具有您想要的尺寸,即3,240 x 1,920px,那么只需按原样放置 - 不要在任何地方更改它的高度或尺寸。

你说:

如果我不设置background.size属性,则场景中不会显示任何图像。

我只是将一个3,240乘1,920px的精灵放入一个没有问题的sks文件中。精灵是否有可能但是在某些东西之后,即zPosition较低?或者图像的大小不是您认为的那样?添加

print("Background size is \(background.size)")

添加精灵后

您可能还想查找.scaleMode文件中设置的场景GameViewcontroller.swift属性。