2017-02-08 36 views
2

我想了解如何在SpriteKit應用着色器的頂部,所以我提出了以下着色器來自一些調整指導(http://battleofbrothers.com/sirryan/understanding-shaders-in-spritekit):着色器不是鋪設在我的精靈

void main() { 
    vec4 val = texture2D(u_texture, v_tex_coord); 

    if (val.a == 1.0) { 
     gl_FragColor = vec4(1.0,1.0,1.0,1.0); 
    } else { 
     gl_FragColor = val; 
    } 
} 

的這個簡單着色器的想法是將每個不透明的精靈節點像素轉換成白色。

着色器與我的精靈節點一起使用,它們具有單個紋理作爲圖像。

我遇到的問題是當我將它應用到來自多層SKScene的精靈節點時,着色器似乎被忽略。我試圖給場景的每個子節點設置着色器,但它仍然沒有出現。

有什麼建議嗎?

+0

對不起,我錯過了一些理解。 「多層SKScene」是什麼意思? – Confused

+0

嗨,謝謝你的支持。我找到了解決我的問題的方法(我將很快發佈)。無論如何,通過「多層SKScene」,我的意思是我創建了一個視覺場景編輯器文件(.sks),並且通過爲各個身體部位添加不同的節點,在此場景中構建了我的精靈,因此很容易製作動畫精靈與一些SKActions。 – gionti

回答

1

我找到了解決我的問題的解決方法。

我最初試圖着色器適用於我精靈的每個子節點如下:

for child in children { 
    (child as! SKSpriteNode).shader = myShader 
} 

的代碼沒有發揮出來。

現在我用下面的工作代碼,這是繼我的孩子節點的層次:

(self.childNode(withName: "body") as! SKSpriteNode).shader = myShader 
(self.childNode(withName: "body")!.childNode(withName: "arm") as! SKSpriteNode).shader = myShader 
// ...