2017-04-12 28 views
-1

我正在Swift 3.1中工作。我想爲SKSpriteNode創建一個陰影。我正在考慮從我的SKSpriteNode中做一個SKShapeNode,並給它一些發光和alpha。將SKSpriteNode轉換爲SKShapeNode

但是我怎樣才能將SKSpriteNode轉換成SKShapeNode?

+0

你打算做什麼樣的陰影效果?圓形斑點或反映的實際精靈 – Knight0fDragon

回答

1

如果您的計劃是製作一個看起來像您的精靈的陰影,那麼使用另一個SpriteNode將是明智的。 SKShapeNodes性能差,將精靈轉換爲矢量形狀的過程將會變得很沉重。

你應該已經閱讀了關於SKEffectNode,因爲你可以使用它們來創建一個帶有當前紋理的SpriteNode,並對其應用一些效果來將紋理變成黑色,模糊,甚至可以使用仿射變換來扭曲和旋轉紋理,以便它看起來像一個影子。

爲了在有很多陰影的情況下提高GPU/CPU效率,您可以簡單地將所有陰影子圖作爲單個SKEffectNode的子元素,它將一次對所有陰影子元素應用效果。我認爲定位主精靈下的影子對你來說不會是一個挑戰。 將陰影作爲主精靈的子元素會強制您爲每個精靈投射一個效果節點來投射陰影,並且會導致影響反覆處理。通過將每個陰影作爲同一個節點的子節點,它們將一次完成渲染,並且效果每幀只能處理一次。

我希望它有幫助!

+0

如果您深入瞭解,也可以使用SKShaders來完成這項工作,但它意味着編寫GLSL代碼。我嘗試過使用這些工具,而xCode中的實現有點奇怪。在當前的開發狀態下,調試GLSL確實很難並且不方便。它也沒有很好的文檔記錄(不是GLSL,而是Apple在SpriteKit中的集成)。也許隨着金屬在這裏越來越多的空間會變得更好。 – BadgerBadger

0

SKShapeNode's已知在SpriteKit中表現不佳。相反,您應該爲陰影添加另一個SKSpriteNode,並將其作爲子節點添加到主SKSpriteNode

如果你想陰影出現在它的父元素下面,你可能不得不調整它的相對z位置。