2017-01-03 180 views
3

的部分是它可以將顏色應用到SKSpriteNode質感,但只能用它的某種顏色融爲一體?SKSpriteNode只收紋理顏色

e.g說我有一個立方體(不是3D,但2D紋理,看起來像一個立方體),我不得不頂白,左下方的藍色,以及右下角的紅色。我是否可以應用顏色和顏色混合因子來僅更改我選擇的顏色?例如白色,紅色或藍色。

請注意,我只在這個例子中使用的多維數據集簡單。在一個真實的場景中,爲了解決方法的目的,節點不會像'立方體臉部'那樣容易'切碎'。紋理可以有它的一部分留下透明或白色總是,但總會有至少一個其他顏色就可以了,不應該改變(認爲它作爲紋理都是兼職的背景下,部分遊戲對象)

+3

不,你不能定位到特定的顏色,你將不得不使用着色器來實現你的影響,或使用覆蓋skspritenode,讓您的純色 – Knight0fDragon

+1

輝煌,這是真正有用的信息,非常感謝您希望您的評論擴展到看做是它解決了這個問題 – TommyBs

+0

@ Knight0fDragon做居然跑到着色器路線! – TommyBs

回答

1

要做到你想實現什麼,你有兩個選擇:

1)瞭解如何使用SKShader:這很遺憾,我不能幫你,因爲我有一個處理這些東西對我這樣的人,所以我沒有必要廣泛地學習着色器。基本上你在做什麼是在GPU級別,針對你想改變的某些像素。

2)的新手用戶更容易的方法,是使用2個SKSpriteNodes。你創建你的第一個精靈與所有你想要的純色,那麼你要更改的所有像素創建一個灰度疊加圖像。然後,您可以應用colorBlendFactor以達到您想要的效果。

基本上是:

let sprite = SKSpriteNode(imageNamed:"fullcolor") 
let overlay = SKSpriteNode(imageNamed:"overlay") 
overlay.color = .Red 
overlay.zPosition = 1 
overlay.colorBlendFactor = 1.0 
sprite.addChild(overlay) 
+0

答案 – TommyBs

+0

很漂亮,着色器是要走的路,我會發布shader代碼爲人們在將來使用它,你可以編輯我的答案或添加一個新的。 – Knight0fDragon