我希望我在SpriteKit中的游戏场景看起来大小不同,具体取决于设备的大小。现在我正在手动调整大小并将一些节点定位为“如果'语句检查帧大小,但不幸的是,由于我的游戏机制,我不能为我的所有精灵做这个(我根据节点的位置检测碰撞,而不是使用PhysicsBodies。如果我要改变大小在节点中,不会检测到这些冲突。)
有没有办法根据设备大小缩放视图的外观,而不是实际缩放精灵本身(即视图会拉伸以适合帧大小,但实际上精灵实际上是相同的大小)?这是我通过改变.ResizeFill(我目前正在使用的那个)的SKSceneScaleModes来实现的吗?
答案 0 :(得分:4)
我不相信有一个简单的方法来解决我的问题,我也不相信我正在寻找的解决方案存在。这就是我解决问题的方法:
首先,我改变了游戏机制。我已经了解到,当你开始设计和初步规划你的游戏时,你必须真正专注于使你的游戏既容易扩展又通用。我第一次设置游戏的方式非常有限。
我想出了我是如何扩展我的游戏并设置我自己的小系统(不是我自己的',它可能是一个非常常见的设置):
var scene = GameScene(size: self.size)
var skView = self.view! as SKView
scene.size = skView.frame.size
var scale = self.frame.size.height / 736
然后我只需将比例设置为我的节点,如下所示:
self.titleText.setScale(scale)
首先,我将当前场景的大小设置为skView的帧大小。有了它,我通过将场景的大小除以iPhone 6 plus的帧大小来创建比例因子。精灵现在将在iPhone 6 plus上以比例因子1出现,并从那里开始缩小。
无论如何,我知道这个解释并不完美,并且可能有更有效的方法。我对SpriteKit比较陌生并且有很多需要学习的东西,但是我不想让这个问题没有得到解决,因为有人在这里停下来。谢谢,如果您有任何问题或我搞砸了,请随时给我留言。