如果方面不匹配,为什么没有SKCameraNode中心?错误?

时间:2015-12-23 08:51:28

标签: ios sprite-kit

SKCameraNode.AspectFillSKScene的宽高比与设备视图的宽高比不匹配的设备上使用时是否存在错误?

我看到问题的minimal demo:在SKS文件中创建的SKScene为768w x 1024h,填充图像(也是768w x 1024h)。它已加载.AspectFillSKLabel以编程方式位于场景的中间。该演示只是SpriteKit游戏的开箱即用iOS模板,添加了背景图像。

纵向中的iPad(如此768w x 1024h)显示此罚款。肖像(414w x 736h)的iPhone 6+显示效果很好。 iPhone 5S(320w x 568h)显示效果很好。

如果我将相机添加到场景中,请将其坐标设置为中间,方法是将其坐标设置为SKS文件中的(384, 512)并将场景设置为使用它,iPad就可以了但现在iPhone(以及宽高比不是3:4的任何其他设备)都不起作用。它显示场景的右侧。它没有居中。从下面的iPhone屏幕截图。

Image not centered if SKScene ratio doesn't match device

相机位于场景中间,应该始终有效。

我目前正在使用解决方法。当您使用.AspectFill时,场景的两侧会被裁剪一定数量 - 让我们称之为cropAmount - 以适应更窄的屏幕。解决方法是向左移动相机,使其偏离cropAmount偏心,然后场景正确显示。

这里的背景图片是我游戏的768w x 1024h背景的@ 3x。我已经将绿色的cropAmount放在与SKView相对应的9:16,红色的场景边界。鉴于相机设置在场景的中间,与标签和图像中间的粉红点相同,为什么视图的中心也不存在呢?

如果这是一个错误,我会离开我的"修复"我将相机偏移cropAmount,以后的更新可能会破坏设备上运行的生产代码。

此外,我没有使用.ResizeFill,因为它没有解决相机节点问题,也意味着资产的大小不正确并且在场景中定位了数千行代码和数十行我已经有超过6个月的SKS文件了。

问题已被编辑。最初我有我的"修复"作为扩展添加,但这只是引起了混乱,所以我删除了它。

0 个答案:

没有答案