私は現在、自分のプロジェクトの 1 つをSpriteKitに変換する過程にあり、 FirstanimateWithDuration
への変換に問題があります。迷惑ですが、ゲームを壊すわけではありません。2 つ目は、がその終了位置をすぐに計算するのに対し、常にその位置を計算するという事実です。画面の下に行が移動するゲームボードがあるため、これは私にとって問題です。この行の真ん中にあるノードが削除された場合、そのノードの下にあるノードを現在空いている位置に移動する必要があります。これは、彼らが動いているターゲットに向かっていることを意味し、SKAction MoveByY: duration:
animateWithDuration
SKAction
animateWithDuration
SKAction
spriteNodes
SKAction
彼らは位置をオーバーシュートします。別の を追加してこの購入を解決することはできSKAction
ますが、その後、さまざまな速度で落下する破片を考慮する必要があり、すぐに乱雑になり始めます。誰かが当て推量を含まないきれいな解決策を持っているかどうか疑問に思っていましたか? 理想的には で を実行するだけですanimateWithDuration
がspriteNode
、残念ながらそれはうまくいきません。
これは私の最初のアニメーション コードでした。
[UIView animateWithDuration:collapseSpeed animations:^{[[[_activePiecesVerticalOne objectAtIndex:piecesInArrayOne - 1] imageView] setCenter:CGPointMake (30, _positionOfLastObjectArrayOne )]; }];
これは私の新しいコードです:
SKAction *collapseUp = [SKAction moveToY:positionOfLastObjectArrayOne duration:collapseSpeed];
collapseUp.timingMode = SKActionTimingEaseInEaseOut; //thanks Can!
SKAction *correctPosition = [SKAction moveByX:0 y:correctionVariable duration:.1];
SKAction *theAnimation = [SKAction group:@[collapseUp, correctPosition]];
[[_fallingPiecesRowOne objectAtIndex:piecesInArrayOne - 1] runAction:theAnimation];
私は実際にはすでにmoveByではなくmoveToを使用していたので、Canに謝罪します。変数 correctPosition = fallingPiecesSpeed * 25。fallingPieceSpeed は -.1 です。これは、落下するすべての破片が更新メソッドによって .01 秒ごとに移動される距離です。ピースをアニメーション化するのにかかる 0.25 秒の間に、これらの -.1 の動きの増分のうち 25 が欠けていたので、私の問題を解決するためにこれを実装しました。animateWithDuration を使用すると、これらの動きの増分が保存され、落ちるときにピースに適用されると思います。これは、SKAction に欠けているものです。このソリューションは、PieceSpeed を -.1 で落下させ続ける限り問題ないように見えますが、-.3 まで上げると、破片がどこに到達するかについて大きな矛盾が生じます。
うまくいけば、これは理にかなっています。私が述べたように、私はよりクリーンなアプローチでこれらすべてをバイパスすることを望んでいましたが、解決策を見つけるためにこれをいじり続ける必要があるかもしれません:S