SpriteKit - 无法理解背景的大小

时间:2017-06-24 04:18:28

标签: swift xcode sprite-kit

我对如何正确调整基于风景的lans背景图像感到困惑。截至目前我正在做GameScene(size: self.frame.size)并且我打印出屏幕的大小,所以我知道我的背景的大小,结果我的背景应该是1024x768,但这看起来并不像喜欢景观尺寸?所以我的背景为1024x768,但是因为iphone的景观尺寸不是1024x768而整个图像都不适合我的iphone。如何制作与iphone尺寸1:1相同的背景?我能想到的唯一方法就是如果我设置GameScene(size: CGPoint(x: 1334, y: 750))但是它不会被任何其他设备搞砸了吗?最好的方法是什么?我有一位艺术家将为我提供背景但我不知道要给他什么尺寸。

1 个答案:

答案 0 :(得分:5)

在处理Sprite Kit的场景时,尽量不要专注于屏幕尺寸,因为屏幕尺寸不再是一个因素(现在这不是100%的绝对事实,这是一般规则)

相反,将您的SKScene视为虚拟屏幕。 SKScene的大小是SKScene的“分辨率”,操作系统将在后台运行,以确定如何将1个虚拟像素(从此处开始,我们将调用点)转换为屏幕像素(此处引用)作为像素)

现在只有一种特殊情况,操作系统会更改分辨率(场景大小)以匹配屏幕,即.resizeFill其他3将永远不会改变您的分辨率。

.aspectFill.aspectFit将确保您的点到像素转换保持相等的宽度和高度(例如,1点可能等于4x4像素)唯一的区别是.aspectFill将扩展为填充整个屏幕,意味着多余的点将在原始屏幕边界外呈现[so(0,0)可能位于最左侧像素左侧20像素,因此不可见]和.aspectFit将填充直到它到达屏幕边界,留下黑条填充未使用的像素。

现在.fill不保持宽度和高度等于像素比,并且在4:3到16:9屏幕的情况下,你会注意到你的像素点将是5 :4因为16:9屏幕比4:3宽25%。这会让你产生脂肪效应。

因此,在处理游戏时,您需要找出所需的效果。如果您将场景大小设置为1024x768,那么所有非视网膜iPad将具有1:1像素对点比率,其中视网膜具有2:1像素对点比率。对于iPhone 5,每个点大约1.14像素(iphone是1168,你的场景是1024,所以你做1168/1024)然后是768,你会失去25%,因为ipad高25%比在风景中的iphone。这意味着只会显示576个点,其余的则在隐形屏幕空间中。

基本上,由于您正在使用2种不同的宽高比,因此iPad和iPhone都可以使用1:1来实现通用应用。您将不得不制作两组不同的资产,或采取一些不会改变游戏体验的创意自由。这完全取决于游戏,不幸的是没有人能够回答它,直到他们了解你的游戏。