0

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

4

1 回答 1

1

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

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