2017-04-12 6 views
-1

私はSwift 3.1で作業しています。私はSKSpriteNodeのための影を作成したい。私は私のSKSpriteNodeからSKShapeNodeを実行し、それにいくつかの輝きとアルファを与えることを考えています。SKShriteNodeをSKShapeNodeに変換する

しかし、私はSKShriteNodeをSKShapeNodeにどのように変換できますか?

+0

どのようなシャドーエフェクトを予定していますか?円の塊または実際のスプライトの反映 – Knight0fDragon

答えて

1

あなたのスプライトのような影を作る計画があれば、代わりに別のSpriteNodeを使用することをお勧めします。 SKShapeNodesはパフォーマンスが低く、スプライトをベクトル形状に変換するプロセスは処理が重くなります。

あなたは現在のテクスチャでSpriteNodeを作成し、それにテクスチャを黒にするために使うことができるので、SKEffectNodeを読んでいるはずです。blured ansはアフィン変換を使用してテクスチャを歪ませて回転させます影のように見える。

シャドーが多い場合にGPU/CPUを効率化するには、すべてのシャドウスプライトをすべてのシャドウスプライトに一度に適用する単一のSKEffectNodeの子として置きます。私は主なスプライトの下に影を置くことはあなたにとって挑戦ではないと思います。 影をメインスプライトの子として持つと、すべてのスプライトが影を投じるためにエフェクトノードを配置しなければならず、エフェクトが何度も何度も処理されることになります。すべての影を同じノードの子として配置すると、それらは一度にすべてレンダリングされ、エフェクトはフレームごとに1回だけ処理されます。

私はそれが助けてくれることを願っています!

+0

あなたがそれに参加しているなら、SKShadersを使って仕事をすることもできますが、それはGLSLコードを書くことを意味します。私はそれらとxCodeでの実装はちょっと変わっています。また、GLSLをデバッグすることは、現在の開発状況では非常に難しく、便利ではありません。それはまた、文書化されていない(GLSLではなく、AppleがSpriteKitに統合している)。たぶんメタルはもっと部屋を増やす方が良いでしょう。 – BadgerBadger

0

SKShapeNodeは、SpriteKitのパフォーマンスが低いことが知られています。代わりに、シャドウに別のSKSpriteNodeを追加し、子としてメインSKSpriteNodeに追加する必要があります。

影を親の下に表示する場合は、相対的なz位置も調整する必要があります。

関連する問題