2017-04-04 109 views
2

我正在使用一個簡單的2D遊戲,我試圖從級別1(場景一)切換到級別2(場景二)。爲了測試,兩個級別都包含相同的內容。這是我的過渡代碼:更改SKScene中心點

let transition = SKTransition.push(with: SKTransitionDirection.left, duration: 1) 
    let nextScene = Scene(size: levelBuilder.scene.size) 
    nextScene.scaleMode = .aspectFill 
    nextScene.backgroundColor = UIColor(red:0.17, green:0.24, blue:0.31, alpha:1.0) 
    levelBuilder.scene.view?.presentScene(nextScene, transition: transition) 

    nextScene.physicsWorld.gravity = CGVector(dx: 0, dy: 0) 
    nextScene.physicsWorld.contactDelegate = levelBuilder.scene.physicsWorld.contactDelegate 

    loadLevelContents(level: 2, world: 1, borderPercentage: 30) 

這完美的作品,但問題不在於它在這裏發生了轉變,但節點裝載到場景二

loadLevelContents(level: 2, world: 1, borderPercentage: 30) 

定位那張罰款,但問題在於,所有內容均基於屏幕中間的中心點或相對(0,0)

場景2在其左下角

enter image description here

中心點雖然我需要它像場景1,它是在屏幕的中間: enter image description here

如何將所有SKScenes的相對點或中心點(不確定其名稱)調整到屏幕中間

+6

這就是所謂的anchorPoint,並且它的設置是這樣的... self.anchorPoint = CGPoint(X:0.5,Y:0.5),只需設置錨點到現場的didMove FUNC –

+0

@RonMyschuk解決我的問題,謝謝。 – Pablo

+0

很高興幫助您,在您的遊戲上祝好運 –

回答

3

你正在尋找的點叫做anchorPoint。在Spritekit左下角是0,0和右上爲1,1。所以把它放在中心,你將不得不設置和0.5,0.5 achorPoint在didMove FUNC

self.anchorPoint = CGPoint(x: 0.5, y: 0.5) 

對於SKScenes的默認值是(0,0),但不僅僅是具有錨點的SKScenes,SKSpriteNodes也具有它。

enter image description here