スプライト キットを使用した私のセットアップは次のとおりです。まず、次のように、SKScene 内に単純なスプライト ノードを作成します。
let block = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(90, 160))
block.zPosition = 2
block.shadowCastBitMask = 1
addChild(block)
次に、ライト ノードをシーンに追加します。
let light = SKLightNode()
light.categoryBitMask = 1
light.falloff = 1
addChild(light)
案の定、ブロックは素敵な小さな影を落とします:
次に、たとえばアクションを実行して、アルファ値を操作してブロックをフェードします。
let fadeOut = SKAction.fadeAlphaTo(0.0, duration: 5.0)
block.runAction(fadeOut)
ここで厄介な状況があります:ブロックがますます半透明になる一方で、影はまったく同じままです。これは、アクションが終了する直前の様子です。
そして、アルファが完全に 0.0 まで下がると、あるフレームから次のフレームへと影が突然消えます。
ただし、シャドウをキャストするオブジェクトがますます透明になるにつれて、シャドウが徐々に弱くなっていく方がはるかに優れています。
質問:
スプライト キットでこのような効果は可能ですか? もしそうなら、あなたはそれについてどうしますか?