2017-04-12 6 views
2

私は1つの.pngイメージを1つ持っています。私は、この画像を使ってアニメーションスターを埋め込んだ文字を作成したいと思います。パーティクルエフェクトやアニメーション化されたsksファイルを使って塗りつぶした文字を作成する

enter image description here

私は潜在的にいくつかのSKSを使用してこれを行うことができます:これは私がやってみたいものです(しかし、星は一種の私はパーティクル効果で行うことができます想像しており、この中にアニメ化されるだろう)各レターのファイルを読み込み、1つの大きなシーンにロードしますか?さらに、ラベルノードにいくつかの星の静的テクスチャを塗りつぶしたい場合は、これを行う別の方法がありますか?

+0

本当に先進的なことをここで求めています。この質問はSOの仕組みとはまったく一致していないので、具体的な回答が得られる特定の質問ではないので、私はそれを閉じるように投票しています。 CGPathを使用してスプライトの移動方法をレイアウトし、SKShaderを使用して星の周りに輝く効果を実現することができます。 – Knight0fDragon

+0

@ Knight0fDragonヒントをお寄せいただきありがとうございます。私はそれを行う方法を参照するとかなり具体的だと思っていましたが、それをどのように見えるかを判断しようとしています。おそらく、私は各文字のために別々のアニメーションシーンを作成し、labelNodeを使わずにそれらの文字をロードしようと考えていることを反映するように編集する必要がありますか? EDITED:私は上で編集しました。 – illuminatedtype

+0

あなたが試したことを示すコードを表示して、微調整する必要があることを示すことができれば、それはうまくいくかもしれませんが、多くの可能な回答をもたらす質問をしているなら、 。この場合のように、いくつかの答えはライブラリX/Yを使用することですが、私のような人はCGPathをフォントから取り除くと言うでしょう。 SKActionを使ってパスに沿って星を動かすことができ、SKShaderはオンラインで見つけられると確信しているシンプルなグローブタイプのシェーダになるので、CGPathアプローチを使用するのが好きです。 – Knight0fDragon

答えて

3

ない理想的な、しかし、実現するのは簡単:

override func didMove(to view: SKView) { 

     if let nodeToMask = SKEmitterNode(fileNamed: "firelfies") { 

      backgroundColor = .black 
      let cropNode = SKCropNode() 
      cropNode.position = CGPoint(x: frame.midX, y: frame.midY) 
      cropNode.zPosition = 1 

      let mask = SKLabelNode(fontNamed: "ArialMT") 
      mask.text = "MASK" 
      mask.fontColor = .green 
      mask.fontSize = 185 

      cropNode.maskNode = mask 

      nodeToMask.position = CGPoint(x: 0, y: 0) 
      nodeToMask.name = "character" 
      cropNode.addChild(nodeToMask) 

      addChild(cropNode) 
     } 
    } 

私は、コードは自明であると思うが、基本的に、あなただけの作物のノードのマスクとしてテキストを使用すると、あなたはエミッタをマスクします。ここでの結果は次のとおりです。

enter image description here

この実装を持つ事は輝きが文字の境界の外に行っていないということです。

+0

なぜこれは理想的ではありませんか?私にはうまく見えます。それは効率が悪いですか...または? – illuminatedtype

+0

パーティクルはマスク(テキスト)の境界の外に出ないためです。しかし、それはあなた次第です。このエフェクトに満足している場合は、エミッタを微調整して、それが何を提供できるかを確認してください。 – Whirlwind

+0

演奏について...演奏できると思います。パーティクルはノードと比較して軽量です。もちろん、テストして、あなたがどれくらい遠くまで行くことができるかを見てください。 – Whirlwind

関連する問題