使用 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
:调整场景大小以适合视图。
我正在尝试为 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
:调整场景大小以适合视图。