私はこれら2つの機能の違いを知りません。これら2つのSpriteKit関数の違いは何ですか?
まず:
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
二:それは指定された時間間隔でノードの位置を変化させるアニメーションバージョンであるため
coin.position.y = -146.115
私はこれら2つの機能の違いを知りません。これら2つのSpriteKit関数の違いは何ですか?
まず:
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
二:それは指定された時間間隔でノードの位置を変化させるアニメーションバージョンであるため
coin.position.y = -146.115
SKAction.moveTo()
があるduration
パラメータを有しています。一方、ノードの位置を変更しても、その動きはアニメートされません。
ちょっとそこには、実際にパラメータとアニメーションだけではありません。あなたが好きなら私の答えをチェックしてください:) – Fluidity
最初の行では、コインクラスオブジェクトを使用しており、そのオブジェクトを実行するアクセス機能が使用されています。第二行コインクラスオブジェクトで
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
は、プロパティposition.y
だアクセスし、値をフロート割り当てます。
coin.position.y = -146.115
希望があります!
ねえ、SOに貢献してくれてありがとう。違いの詳細な説明については私の答えを見てください:) – Fluidity
SKActionは、update
の直後の次のフレームまで処理されません。 didEvaluateActions
の後に.run
と電話すると、あなたの位置は更新されず、そのためにバグが発生する可能性があります。
コードの2番目の行は、SKループ内のあなたの位置に関係なく直ちに行われます。
例物理学を使用していて、didBegin(contact
の何かに.run(.move(
を呼び出して、そのスプライトがすでにdidEnd(contact)
に移動していることが予想される場合は、問題が発生します。このような状況では、アクションを使用する代わりに手動で.position
を調整する必要があります。
それだけ手動で位置を調整するよりも、どこかの間に20〜30%遅いSKActionオブジェクトの初期化を必要とするため、第二に、.run
コマンドは、また、より少ないパフォーマンスです。
与えられた違いの量はあまり加算されませんが、複雑なシーンではすべてが16ms(60fps)で完了するかどうかの違いになる可能性があります。
第3に、他の人が触れたように、forDuration
パラメータがあります。このパラメータを使用すると、一定の時間、たとえば2秒間の動きをアニメートできます。
SKActionのドキュメントはhttps://developer.apple.com/documentation/spritekit/skaction/1417768-movetoでご覧ください。要するに、SKActionは指定された期間にわたってスプライトオブジェクトを新しい位置にアニメートします。 – firstinq