【问题标题】:IOS Swift SpriteKit Scaling Entire Views According to Frame SizeIOS Swift SpriteKit 根据帧大小缩放整个视图
【发布时间】:2015-05-24 19:16:18
【问题描述】:

我希望我在 SpriteKit 中的游戏场景根据设备的大小呈现出不同的大小。现在我正在使用“if”语句手动调整和定位我的一些节点,检查帧大小,但不幸的是,由于我的游戏机制,我无法对所有精灵执行此操作(我正在检测基于我的节点的位置,而不是使用 PhysicsBodies。如果我要更改节点的大小,则不会检测到这些碰撞)。

有没有办法根据设备大小缩放视图的外观,而不是实际缩放精灵本身(即视图会伸展以适应帧大小,但实际上精灵实际上是相同的大小)?这是我通过从 .ResizeFill (我目前使用的那个)更改 SKSceneScaleModes 来实现的吗?

【问题讨论】:

  • 重要的是要注意 frame.width/height 与 view.bounds.width/height 不同

标签: ios xcode swift sprite scaling


【解决方案1】:

我不相信有一种简单的方法可以解决我的问题,也不相信我正在寻找的解决方案存在。这就是我解决问题的方法:

  1. 首先,我改变了我的游戏机制。我了解到,当您着手设计和初步规划您的游戏时,您必须真正专注于使您的游戏既易于扩展又具有通用性。我最初设置游戏的方式非常有限。

  2. 我想出了如何扩展我的游戏并设置我自己的小系统(不是我自己的,它可能是一个很常见的设置):

    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 的帧大小来创建一个比例因子。精灵现在将以 1 的比例因子出现在 iPhone 6 plus 上,并从那里缩小。

无论如何,我知道这种解释并不完美,并且可能有更有效的方法来做到这一点。我对 SpriteKit 还比较陌生,有很多东西要学,但我不想因为有人在这里停下来而对这个问题置之不理。谢谢,如果您有任何问题或我在某个地方搞砸了,请随时给我发消息。

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 2017-02-13
    • 1970-01-01
    • 2018-01-13
    • 2011-03-17
    • 2022-01-03
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多