使用 SKPhysics 在 iPad Pro 12.9 上设置屏幕边界

Setup Screen Boundary on iPad Pro 12.9 with SKPhysics

我正在尝试为 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(点数的一半),因此我看不到这些数字与报告的帧大小之间的相关性。

这与您缩放场景的方式有关。在呈现场景时,您可能正在设置 scaleMode property of the scene, which is of type SKSceneScaleMode。有四种不同的模式:

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