2015-05-29 59 views
0

我創建了一個由多個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(這有點難以看到,但是綠線是物理體的邊界,當平鋪的地圖結束時(和灰色的地方),物理體應該停止,因爲這是玩家不應該被允許再移動)。 如果您需要更多代碼,請留下評論(我相信我包含了任何相關的內容)。

回答

0

經過我的一些代碼搞亂之後,我發現一個修復方法就是將physicsBody添加到我的地圖而不是場景中。一個相當簡單的解決方案,所以我很驚訝,我沒有早點想到它。考慮到這一點,我已經回答了我自己的問題,不再需要幫助。