2015-04-20 24 views
1

我開始通過製作遊戲迅速學習,並遇到一些問題。
我正在做一個瓷磚遊戲。我製作了一塊帶有一些洞的白色瓷磚6x6,在它們上面我製作了可以移動彩色的瓷磚。
Swift SKView textureFromNode出錯

  • 白色瓷磚是靜態
  • 彩瓦是DINAMIC

,然後我就想,爲什麼不把背景平鋪整個精靈,和我去,但我遇到的問題。

正如你在第二圖像白色瓷磚和彩色瓷磚看到不符合他們的位置。他們之間有一點差距。我有一系列的位置和瓷磚放置在相同的位置,但是當我創建精靈時,它們會稍微移動一點。

let boardTexture = self.view?.texture(from: backgroundNodes) 
boardBackground = SKSpriteNode(texture: boardTexture) 

搜索和閱讀後,我想這一切卻並沒有幫助:

  • 實例第一次更新調用
  • 後一切都添加到backgroundNodes另一個精靈是更大的作爲屏幕是
  • 更改SKTexture過濾模式
  • 作物位置例如:1.2345 - > 1.2

回答

4

你應該始終使用

SKView().texture(from: SKNode, crop: CGRect) 

否則你很容易獲得的文物。作物通常應該是

CGRect(x:-size.width/2, y:-size.height/2, width:size.width, height:size.height) 

如果您的節點具有0.5 0.5(即中心)的默​​認錨點。使用它會給你你想要的尺寸。此外,你不需要這個

self.view?.texture(from:backgroundNodes) 

代替,只是說

SKView().texture(from:backgroundNodes) 

,你可不必保持一個參考的地方。另外,如果你在一個sknode子類的init函數中做某件事,那麼將不會有成員「view」,因爲它還沒有被添加到樹中。