在分块地图周围创建边界

Creating a boundary around a tiled map

我创建了一个由多个 367x367 精灵节点组成的平铺地图。我这样创建这张地图:

for var i = 0; i < Int(multiplier); i++ {
    for var j = 0; j < Int(multiplier); j++ {
        // Positive
        var map = SKSpriteNode(imageNamed: "tiledBackground.png")
        var x = CGFloat(i) * map.size.height
        var y = CGFloat(j) * map.size.height
        map.position = CGPointMake(x, y)
        self.addChild(map)
    }
}

在上面的示例中,乘数为 27,地图大小为 10,000x10,000。

这会按预期创建地图,但我希望这张地图具有玩家无法离开的边界。我知道如何创建边界,但我不确定用什么值来初始化物理体。 我试过这个:SKPhysicsBody(rectangleOfSize: map.mapSize) 然而这产生了非常错误的结果。

我也试过这个:SKPhysicsBody(edgeLoopFromRect: CGRectMake(0, 0, map.mapSize.width, map.mapSize.height)) 它构建了一个物理体,就像它应该的那样(我有 showPhysics = TRUE),但是物理体似乎随着玩家移动(我让玩家移动并居中播放器上的地图)。你可以明白我在这里的意思:http://gyazo.com/675477d5dd86984b393b10024341188a(有点难看,但那条绿线是物理体的边界。当平铺地图结束时(以及它变成灰色的地方),物理体应该停止,因为那是玩家不应该再被允许移动的地方)。 如果您需要更多代码,请发表评论(我相信我包含了所有相关的内容)。

在弄乱了我的一些代码后,我发现一个解决方法是将 physicsBody 添加到我的地图而不是场景。一个相当简单的修复,所以我很惊讶我没有早点想到它。 考虑到这一点,我已经回答了我自己的问题,不再需要帮助。