我已經創建了一個帶有物理bodys的SpriteKit場景。這工作得很好。我還在使用蘋果最佳實踐和「攝像頭節點」滾動場景。SpriteKit運動場景物理接頭損壞
我的場景節點樹是這樣的:
Scene
|- World
|- Camera node
|- Game nodes with physics bodys
我的問題是,在遊戲中創建新的關節(主要是固定接頭)動態新節點。此時,世界節點的位置與開始時不同(例如:開始時(0,0),遊戲期間(1000,500))。 現在,固定關節的錨點不在我想要的位置,它在現場的某個地方。
我假設,場景的座標系與物理引擎的座標系不同。
對於錨點,我用下面的轉換:
[world.scene convertPoint:node.position fromNode:node.parent];
我想在「節點」的位置,然後設定anchorpoint。 移動世界節點後,定位點的計算不再有效。
感謝您的幫助!
格爾茨 - Nekro
更新:
代碼居中播放器上的場景
- (void)centerOnNode:(SKNode*)node {
CGPoint cameraPositionInScene = [node.scene convertPoint:node.position fromNode:node.parent];
node.parent.position = CGPointMake(node.parent.position.x - cameraPositionInScene.x, node.parent.position.y - cameraPositionInScene.y);
}
嘗試添加您的遊戲節點到世界而不是相機節點。我實施了一個測試應用程序,並在移動世界/相機按預期工作後添加了一個關節。 – 0x141E
@ 0x141E對不起,我更新了我的文字。我將遊戲節點並行添加到攝像機節點,而不是攝像機節點的子節點。奇怪的是,如果我爲我的SpriteKit場景激活物理的可視化,偶爾會出現連接到我的中央播放器節點的關節。我已經爲創建關節的唯一函數設置了一個斷點,但它看起來像這條路徑從來沒有跑這個「鬼關節」... – Nuker
只是爲了確保:你的物理機構使用場景座標連接?而不是Node的? – ColdSteel