【问题标题】:Setup Screen Boundary on iPad Pro 12.9 with SKPhysics使用 SKPhysics 在 iPad Pro 12.9 上设置屏幕边界
【发布时间】:2017-02-08 13:56:31
【问题描述】:

我正在尝试为 iPad Pro 12.9 创建物理边界

这就是我的做法:

override func didMove(to view: SKView) {

        physicsWorld.contactDelegate = self

        let sceneBody = SKPhysicsBody(edgeLoopFrom: self.frame)
        sceneBody.friction = 0
        self.physicsBody = sceneBody

....
}

但 Y 在横向模式下有些偏离(远低于和高于实际屏幕),而在纵向模式中则稍有偏离。但 X 在两者中都是正确的。

我不知道我做错了什么。

更新

我在上面添加了一个打印,它显示 self.frame 的 maxX 和 maxY 分别为 375 和 667。在横向模式下。据我所知,这两个数字都不是应该的,但是 X 值正常工作,而 Y 远离屏幕的顶部和底部。

此 iPad 型号的屏幕分辨率为 2732x2048(以点为单位的一半),因此我看不出这些数字与报告的帧大小之间存在相关性。

【问题讨论】:

  • 为什么不是这些数字?这就是你设置场景时的大小
  • 在我看来,您将场景构建为 iPhone 6 大小

标签: swift ipad sprite-kit skphysicsbody skphysicsworld


【解决方案1】:

这与您缩放场景的方式有关。呈现场景时,您可能正在设置场景的scaleMode 属性,其类型为SKSceneScaleMode。有四种不同的模式:

  • fill:每个轴都独立缩放以适应整个屏幕
  • aspectFill:场景被缩放以填满屏幕,但保持纵横比不变。这是您的场景可能设置的那个。
  • aspectFit:场景被缩放以适应屏幕,但保持纵横比。如果场景与设备屏幕的纵横比不同,则会出现信箱。
  • resizeFill: 调整场景大小以适应视图。

【讨论】:

  • 据我所知,我没有设置这个。使用默认 SpriteKit 游戏模板。
  • 在默认模板中,这是在didMoveToView() 函数中的GameViewController.swift 中设置的。
  • 你将使用 .aspectFill
  • 您可以通过转到GameScene.sks,选择Scene,然后在属性检查器中选择size 弹出菜单并选择iPad Pro 12.9" 来编辑场景的原始大小跨度>
  • 这是否意味着没有一个真正通用的“尺寸”完全可以适应?总是很难在某个地方设置?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 2020-02-19
相关资源
最近更新 更多