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

时间:2016-09-30 04:49:20

标签: swift ipad sprite-kit skphysicsbody skphysicsworld

我正在尝试为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。在横向模式下。据我所知,这些数字都不是它们应该是的,但是当Y离开屏幕的顶部和底部时,X值正常工作。

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

1 个答案:

答案 0 :(得分:1)

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

  • fill:每个轴都是独立缩放的,以适应整个屏幕
  • aspectFill:场景缩放以填充屏幕,但保持纵横比固定。这是您的场景可能设置的那个。
  • aspectFit:场景缩放以适应屏幕内部,但保持纵横比。如果场景与设备屏幕的宽高比不同,则会有字母装箱。
  • resizeFill:调整场景大小以适应视图。