2013-10-31 13 views
7

Apples SpriteKit Frameworkを使用してA(100,50)からB(250,450)までの行を描画したいとします。SpriteKitでアニメーションを描くことは可能ですか?

これまでのところ、SKShapeNodeを使用してこの行を描画し、そのパスプロパティを設定できました。

私が達成したいのは、この線をアニメーションで描くことです。 A点からBまで線を描くのに2秒かかると言います。

SKActionクラスを調べましたが、この機能をデフォルトでサポートする方法はないようです。

これは私がラインを作成するために使用するコードです:

CGMutablePathRef path = CGPathCreateMutable(); 
CGPathMoveToPoint(path, NULL, 100, 50); 
CGPathAddLineToPoint(path, NULL, 250.0, 450.0); 

SKShapeNode *line = [SKShapeNode node]; 
line.path = path; 
[line setStrokeColor:[UIColor whiteColor]]; 
[self addChild:line]; 

誰もが正しい方向に私を指すことができますか?

+0

など色パラメータを追加するように、これは比較的簡単に見えますが、あなたはそれをより柔軟にしたい場合、あなたはまだサブクラス化でき、あなたの質問をワードし直すことはできますか?一般的に '私にtezcodezを与える'タイプの要求は、SOのための良い一致とはみなされません。おそらくあなたが試したこと、うまくいかないことについて詳しく説明します。 –

+2

皆さん、誰かを困惑させるのではなく、近い投票を説明するコメントを残すと便利です。 –

+2

このヒントのためにジャスパーに感謝します。しかし、今私は自分自身でうまくいく解決法を書いた。 SKShapeNodeをサブクラス化してstartとendを持つ行を作成し、アニメーション化された描画を行うカスタムSKActionを追加しました。 –

答えて

4

あなたはおそらくあなたが望むものを達成できるSKActionと、いくつかの方法があります:

SKAction performSelector: onTarget:

SKAction waitForDuration:

あなたがSKShapeNodeをサブクラス化する場合は、中にこれら二つの方法を利用することができますがSKAction sequenceは時間の経過とともに線を描画します。

もちろん、新しい位置を手動で計算して、各繰り返しに描画し、線が完了しているかどうかを判断し、時間の経過とともに描画を終了する必要があります。

誰かがSpriteKitでこの機能を実現する別の方法を持っているのであれば、間違いなく興味がありますが、そうでない場合はうまくいくはずです。

申し訳ありませんが、これをコード化する時間はありませんが、ロジックが必要です。

UPDATE:

私は個人的に少し楽だと思う別のオプションを考えました。

  1. 原点と終点の間の角度を計算します。
  2. 原点と終点からの距離を計算します。
  3. サークルまたはピクセルのシェイプノードを作成します。それをあなたが描く鉛筆の点と考えてください。
  4. 形状ノードを回転させ、計算した角度を使用して終点に向かって角度を付けます。
  5. 計算した距離に基づいてシェイプノードの幅をスケーリングするSKActionを作成します。
  6. SKActionを実行します。

+0

おそらく2つのスプライトを試してみてください。あなたのラインの色と、もう一つは背景色です。それらを水平方向にスケールします。 – TJA

関連する問題