我想知道如何将 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
非常感谢任何形式的帮助。
非常感谢你的时间。
干杯, 费德里科。
答案 0 :(得分:0)
如果您的背景图片具有您想要的尺寸,即3,240 x 1,920px,那么只需按原样放置 - 不要在任何地方更改它的高度或尺寸。
你说:
如果我不设置background.size属性,则场景中不会显示任何图像。
我只是将一个3,240乘1,920px的精灵放入一个没有问题的sks文件中。精灵是否有可能但是在某些东西之后,即zPosition较低?或者图像的大小不是您认为的那样?添加
print("Background size is \(background.size)")
。
您可能还想查找.scaleMode
文件中设置的场景GameViewcontroller.swift
属性。