假设我将SKScene定义为320x2000。我将在320x480的屏幕上显示它,因此它不会在给定时间显示所有内容。现在我想让一个英雄飞过场景,所以他有一天会到达y = 2000场景的尽头。为此我有一台相机。像这样实现:
let theCamera = SKCameraNode()
class GameScene: SKScene, SKPhysicsContactDelegate {
let player: Hero()
override func didMoveToView(view: SKView) {
// ...
scene!.scaleMode = SKSceneScaleMode.ResizeFill
super.didMoveToView(view)
// ...
player.setPosition(view.bounds.size.width / 2, y: view.bounds.size.height / 5)
// ...
self.camera = theCamera
self.camera?.position = player.position
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
// Let the player fly and the camera follow him
player.position.y += 1
self.camera?.position = player.position
}
}
发生的事情是a)我的场景不会从屏幕底部开始,有一个约为屏幕大小30%的空白位。 b)在场景中“飞行”之后,玩家精灵消失了。
另外,我在didMoveToView()和update()中使用此调试代码:
print("DEBUG: BOUNDS \(self.view?.bounds)")
print("DEBUG: PLAYER \(player.position))")
print("DEBUG: SCENE \(self.scene?.size)")
这是didMoveToView()的输出:
DEBUG: BOUNDS Optional((0.0, 0.0, 320.0, 480.0))
DEBUG: PLAYER (160.0, 96.0))
DEBUG: SCENE Optional((320.0, 2000.0))
这是update()的输出:
DEBUG: BOUNDS Optional((0.0, 0.0, 320.0, 480.0))
DEBUG: PLAYER (160.0, 96.0))
DEBUG: SCENE Optional((320.0, 480.0))
所以:我的场景以某种方式调整大小。我想我在这里做错了什么。我只是想要一个大的(比设备的视图更大)场景部分地出现在视图中,让玩家能够飞过场景到达终点。我也使用.ResizeFill让场景/视图适应用户设备大小。这就是为什么我的宽度为320 - 它应该很容易缩放到彼此的苹果设备大小。但不知何故,这不适用于iPhone 6s + Simulator。
感谢您在视频/场景/相机设置方面的任何建议。