2016-08-03 52 views
1

正如我們所知,SKScene的原點位於左下方。SpriteKit/SKScene:如何從左上角繪製而不是從左下角繪製?

但我嘗試從包含0和1矩陣的文件進行簡單的水平加載。雖然0沒有任何意義,但1表示牆(簡單矩形)。

由於文件的內容顯然是從左上角到右下角,我想從場景的左上角進行繪製。

但是我的第一個來自文件的字符是在場景的左下角繪製的。 我試圖將場景的yScale設置爲-1,希望其反轉y軸,但這不起作用

什麼是這樣的最清潔的方式SKScene我總是從左上角開始繪圖?我仍然想把我的anchorPoint保持在0.5,0.5。

所以從左上角將位於x=-widthOfScreen/2y=heightOfScreen/2

+0

看看這個答案http://stackoverflow.com/a/20734093/1894067 –

+0

沒了,正如我在SKScene寫道yScale做不行。在控制檯上獲取msg:SKScene:設置SKScene的比例不起作用。 – NovumCoder

+0

有趣,但沒有看到你的代碼我認爲在回答中的傢伙不能更好地理解如何幫助你,嘗試添加一些代碼來回復這個問題 –

回答

1

我不知道,如果這是你要的東西,但如果你只是想改變座標周圍你可以做什麼系統創建CGPoint的延伸,像

//CGPoint+SpriteKit.swift 
extension CGPoint { 
    func flipCoordinates() -> CGPoint { 
     return CGPoint(x: x, y: UIScreen.mainScreen().bounds.height - y) 
    } 
} 

我覺得應該工作,因爲你的錨點(0.5,0.5)

+0

不完全是我所做的,但我繪製的瓷磚(級別)和元素時只是翻轉Y座標。因爲定位點爲0.5,0.5,所以我一直按照通常的方式繪製所有其他東西。但是在一點上翻轉而不是改變一切是最簡單的方法。謝謝。 – NovumCoder

0

由於SKSpriteNode會讓你使用-1規模翻轉其內容,您可以將您的所有節點的主SKSpriteNode下用的yScale繪圖-1。

final class GameScene: SKScene 
{  
    var masterNode:SKSpriteNode! = nil 
    override func addChild(node: SKNode) 
    { 
     if masterNode == nil 
     { 
      masterNode = SKSpriteNode() 
      masterNode.position = CGPoint(x:0, y:size.height) 
      masterNode.anchorPoint = CGPointZero 
      masterNode.yScale  = -1 
      super.addChild(masterNode)   
     } 
     masterNode.addChild(node) 
    } 
} 

請注意,您將需要保持masterNode與視圖大小,如果/大小的變化時對準y位置。

+0

爲什麼使用動態分配到GameScene?這是對班級的限制,是否有一個合理的原因? –

相關問題