2016-08-02 51 views
6

在之前版本的SpriteKit中,原點(0,0)總是在左下方。此外,默認情況下,Node的父項添加到其父項中。SpriteKit的座標系在Xcode 8中改變了嗎?

看來,從Xcode 8開始,新的默認原點位於屏幕的中心。

這是正確的行爲,測試版中的錯誤,還是我根本不理解SpriteKit?

相同的代碼被用於兩個

import SpriteKit 
import GameplayKit 

class GameScene: SKScene { 
    override func didMove(to view: SKView) { 
     let ship = SKSpriteNode(imageNamed: "Spaceship") 
     addChild(ship) 
    } 
} 

的Xcode 7:

enter image description here

的Xcode 8:

enter image description here

+1

它可以。什麼spirte.position,sprite.anchorPoint和scene.anchorPoint說? – Whirlwind

+0

在Xcode 8中,它們讀取 - 精靈位置(0.0,0.0),精靈anchorPoint(0.5,0.5),場景anchorPoint(0.5,0.5) –

+0

看起來應該是這樣(至少它是如何在Xcode 7中)。 – Whirlwind

回答

6

否,SpriteKit仍使用相同的座標系。

區別在於示例.sks場景文件與新項目一起提供的內容已更改。在Xcode的早期版本中,該.sks文件在(0,0)處具有其定位點(即,場景的「原點」所在的位置),這導致原點位於左下角。

在Xcode 8中,.sks文件的默認錨點爲(0.5,0.5),它是場景的中心。

要恢復舊的行爲,只需進入該.sks文件並將錨點重置爲(0,0)。任何遺留的.sks文件都應該仍然有效,因爲它們的錨點之前被設置爲(0,0)。

+0

感謝@cc我很想能夠確認這一點,不幸的是,每次打開.sks文件時,最新的Xcode 8 beta崩潰。我會盡快更新一次。 –

+0

是的,這是一個衆所周知的問題,顯然 - 蘋果開發者論壇討論了.sks編輯器崩潰的主題。 (如果你遇到beta 3,你可以看到上面的行爲。) –