Saw*_*r05 50 ios sprite-kit xcode6
我正在使用Xcode 6,iOS 8 beta 5中的SpriteKit.所有内容都在iPhone 4S模拟器上完成并完美运行,但是当切换到5S时,屏幕底部的元素被切断.
根据我的理解,iPhone屏幕的左下角应该是CGPoint(0,0),但是在通过将坐标打印到控制台来检查位置后,我可以点击左边角落的最低点(5, 44).在我的场景设置中有什么问题导致了这个吗?
没有对GameViewController文件进行任何更改,甚至在我剥离GameScene文件后问题仍然存在.
任何人都可以至少指出我正确的方向吗?
Epi*_*yte 115
添加以下代码将解决您的问题(代码在Swift中):
scene.scaleMode = SKSceneScaleMode.ResizeFill
Run Code Online (Sandbox Code Playgroud)
现在,如果你想知道为什么这可以解决你的问题,你的问题实际上是什么,以及如何处理多种分辨率 - 我建议你继续阅读.
有三件事可能会影响场景中节点的位置.
1)锚点
确保场景的锚点设置为(0,0)左下角.默认情况下,场景的锚点从(0,0)开始,所以我假设这不会导致问题.
2)尺寸
检查场景的大小.我通常使我的场景大小与设备的大小相匹配(即iPad,iPhone 4英寸,iPhone 3.5英寸),然后我在场景中放置另一层来存储我的节点.这使我能够为分辨率较小的设备执行滚动效果,但这取决于您的游戏当然.我的猜测是你的场景大小可能设置为320,480,这可能会导致iPhone 5s出现定位问题.
3)缩放模式
缩放模式对场景中节点的定位有很大影响.确保将比例模式设置为对游戏有意义的事物.当场景大小与视图大小不匹配时,缩放模式会启动.因此,缩放模式的目的是让Sprite Kit知道如何处理这种情况.我的猜测是你将场景大小设置为320,480并且场景被缩放以匹配iPhone 5视图,这将导致与你描述的相同的定位问题.以下是您可以为场景设置的各种比例模式.
SKSceneScaleMode.AspectFill
Run Code Online (Sandbox Code Playgroud)
计算每个维度的缩放因子,并选择两者中较大的一个.场景的每个轴都按相同的缩放因子缩放.这可以保证视图的整个区域都被填充,但可能会导致部分场景被裁剪.
SKSceneScaleMode.AspectFit
Run Code Online (Sandbox Code Playgroud)
计算每个维度的缩放因子,并选择两者中较小的一个.场景的每个轴都按相同的缩放因子缩放.这可以保证整个场景可见,但可能需要在视图中使用letterboxing.
SKSceneScaleMode.Fill
Run Code Online (Sandbox Code Playgroud)
场景的每个轴都是独立缩放的,以便场景中的每个轴都精确映射到视图中该轴的长度.
SKSceneScaleMode.ResizeFill
Run Code Online (Sandbox Code Playgroud)
场景未缩放以匹配视图.而是自动调整场景的大小,使其尺寸始终与视图的尺寸相匹配.
结论
看起来您想要删除场景的缩放,这样您在场景中的位置将与视图中的实际位置匹配.您可以设置场景的大小以匹配视图大小,在这种情况下不会进行缩放.或者您可以将场景的缩放模式设置为ResizeFill,这将始终使场景的大小与视图的大小相匹配,并且不会缩放任何内容.一般情况下,我会远离任何缩放,而是调整界面和场景大小以最适合每个设备.您可能还希望添加缩放和/或滚动以允许具有较小分辨率的设备实现相同的视图字段.
但是,如果我想扩展我的场景怎么办?
但是,如果您需要缩放场景,但仍希望位置相对于视图(即,即使场景被截止,您希望(0,0)成为屏幕的左下角),请在此处查看我的答案
有关扩展以支持多个设备的更多详细信息,请参阅此处的答
| 归档时间: |
|
| 查看次数: |
21209 次 |
| 最近记录: |