私は動いているオブジェクトの速度(イメージ)をチェックするif文を持っています。ステートメントのポイントは、画像がどのように影響を受けているかを判断することであり、いったんそうするとXまたはY平面をロックするので、滑らかな左右の動き、またはスムーズな上下の動きです。スワイプの方向を決定する文
コードは以下のとおりです(まず最初に右の動きを確認し、次に左を確認します)。左右に動く場合、動きははるかにスムーズです。しかし、時々、動きに上下に影響を与えようとするとき、それは左右の動きにロックされます。これは私が信じているのは、左と右の動きのためのif文を最初に探しているからです。私が最初にチェックされるように上下に動かすと、左右の動きが不安定になります。これを行うより良い方法はありますか?あなたはこのような右に少し非常に高速な動きまでとし、持っていたときにこれに伴う問題の
let velocity = recognizer.velocity(in: self.view)
if velocity.x > 75 {
movingRight = true
myBlocks[objectDragging].center.y = CGFloat(initPosy)
} else if velocity.x < -75 {
movingLeft = true
myBlocks[objectDragging].center.y = CGFloat(initPosy)
} else if velocity.y < -30 {
movingUp = true
myBlocks[objectDragging].center.x = CGFloat(initPosx)
} else {
movingDown = true
myBlocks[objectDragging].center.x = CGFloat(initPosx)
}
一方、あなたは、例えばAppleがSafariで行うようにしたいと思うかもしれません。水平な指の動きから始めて水平にスクロールさせ、垂直の指の動きから始めるときだけスクロールを垂直に固定します。しかし、45度の角度またはそのまわりで動くと、スクロールは無指向性であり、どの軸にもロックされません。 – johnyu
提案していただきありがとうございます。私は明白な比較をすることを考えていませんでした。 – idlehand