在SKScene中获取屏幕边界 - didMoveToView(...)

时间:2015-07-02 19:39:41

标签: ios swift sprite-kit

我是SpriteKit和Swift的新手,我有以下问题:

我启动一个新的SpriteKit Swift项目,然后打开

class GameScene: SKScene

有方法

override func didMoveToView(view: SKView)

现在我要创建一个与iPhone屏幕(横向或纵向)完全相同的worldBorder 它应该像在例如...球无法脱身。

我做了类似的事情:

let worldBorder = SKPhysicsBody(edgeLoopFromRect: self.frame)
self.physicsBody = worldBorder

但这不起作用,它比电话中的模拟部分更大。

如何制作?

编辑: 我的GameScene有这个属性,我的iphone的高度作为边框工作。但是在portraite模式中,边界是左右两边。 enter image description here

2 个答案:

答案 0 :(得分:1)

由于worldBorder是一个物理实体,它可能会受到重力影响并从屏幕上掉下来。试着固定它:

worldBorder.physicsBody?.pinned = true

另一个选择是创建几个节点并将它们放置在框架周围的边框上。

答案 1 :(得分:0)

尝试这样做:

override func didMoveToView(view: SKView) {
    let worldBorder = SKPhysicsBody(edgeLoopFromRect: view.frame)
    self.physicsBody = worldBorder
}   

我认为调用self.framedidMoveToView可能没有调整大小。此外,如果您支持纵向和横向等多个方向,则可能需要处理过渡到其他尺寸。