ios - 如何使 SKScene 具有固定宽度?

标签 ios sprite-kit

我正在制作一个基于 spriteKit 的游戏,想知道我是否可以将 SKScene 设置为固定宽度(以便更轻松地布置 Sprite ),并让它在保持纵横比的同时调整到实际屏幕宽度。是否有可能实现这个目标,是否推荐(会不会因为调整大小而导致 Sprite 渲染不清晰)?

最佳答案

给场景一个固定的大小实际上是我们在 SpriteKit 游戏中想要做的。 SpriteKit 将使用 scaleMode 设置(默认为 .aspectFill)为每个设备缩放游戏。将场景设置为设备大小或将 .resizeFill 用于缩放模式不是一个好主意,因为这会导致不同设备上的大量不一致。我之前去过那里,只有一场比赛,那绝对是一场噩梦。

所以我们基本上有两种方法可以正确地做到这一点

1) 将场景大小设置为 iPad(例如 1024x768 - 横向,768x1024 - 纵向。这是 Xcode 7 中的默认设置。

您通常只是在 iPad 的顶部/底部(横向)或左/右(纵向)显示一些额外的背景。

在 iPad 上显示更多的游戏示例:

Altos Adventure、Leos Fortune、Limbo、The Line Zen、现代 war 5。

2) Apple 将 xCode 8 中的默认场景尺寸更改为 iPhone 6/7(750*1334-Portait,1337*750-Landscape)。此设置将裁剪您在 iPad 上的游戏。

在 iPad 上显示较少的游戏示例:

Lumino City,机器人 unicorn 袭击

这两个选项之间的选择取决于您,并且取决于您制作的游戏。我通常更喜欢使用选项 1 并在 iPad 上显示更多背景。

无论场景大小如何,缩放模式通常最好保留默认设置 .aspectFill。这样,您将在所有设备上获得一致的体验。

我不会尝试在不同设备上手动更改场景或节点大小/比例的情况下进行一些随机修改,您应该让 xCode/SpriteKit 为您完成。

在代码中你会像这样用你喜欢的大小初始化一个 SKScene

let gameScene = GameScene(size: CGSize(width: 1024, height: 768))

如果您使用可视场景编辑器,您可以直接在右侧的检查器面板中设置场景大小。

希望对你有帮助

关于ios - 如何使 SKScene 具有固定宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42878452/

相关文章:

ios - Sprite Kit 中的碰撞检测

ios - Swift 3 上传图片到 Parse Server

ios - swift 2 : Strange Objective C -> Swift method's signature conversion

ios - 使用 SpriteKit 的着色器仅注册黑色的 alpha

ios - SpriteKit 停止以指定角度旋转的轮子

ios - 为 iPhone/iPad 应用程序/游戏创建图像/ Sprite 的正确步骤是什么?

ios - 通过 URL 下载 GMSMarker 图标

ios - ContainerView 位置不正确

ios - 'init' 是否被禁止作为变量名的*部分*?

xcode - 以横向模式启动屏幕