SKScene の子として SKSpriteNode がありますが、スプライト ノードはシーンよりもはるかに大きいため、すべてを表示するには、ユーザーがスプライト ノードを手動でスクロールできるようにする必要があります (これは巨大なマップです)。 )。私は SKAction moveByX: y: Duration: メソッドを使用しており、moveByX 部分は期待どおりに機能しています。ただし、Y パットによる移動により、マップが画面の下部から非常に速く発射されます。touchesMoved の私のコードは次のとおりです。
CGFloat xDiff = location.x - prevLocation.x;
CGFloat yDiff = location.y - prevLocation.y;
SKAction *moveBy = [SKAction moveByX:xDiff y:yDiff duration:0];
if (YES) NSLog(@"%f, %f", xDiff, yDiff);
[map runAction:moveBy];
したがって、このロジックは x 軸には当てはまりますが、y 軸には当てはまりません。さらに、yDiff を逆に計算するように変更すると (prevLocation.y - location.y)、NSLog 出力で、yDiff は 1 回のパン アクションで累積されますが、xDiff はそうではありません。
私は何が欠けていますか?