2017-10-20 7 views
0

私のゲームでは、スワイプできるボールがあります。私はそれをユーザーが特定のポイントの上にボールをドラッグすることができないようにしようとしています。しかし、スワイプして誤ってその点に入ると、ボールはまだ動きます。私はguard location < 100 else {return}を置くたびに、エラー:タイプ 'CGPoint'と 'Int'のオペランドには、バイナリ演算子 '<'を適用できません。

"Binary operator '<' cannot be applied to operands of type 'CGPoint' and 'Int'"

が現れて、私はそれを修正する方法がわかりません。ちなみに、guardは、ユーザーが誤って行の上に来たときでもボールの速度が変わらないようにしますか?ここで

は私のコードです:

for touch in touches { 
    let location = touch.location(in: self) 
    let node = self.atPoint(location) 

    guard location < 100 else { return } 
    if ball.frame.contains(location) { 
     touchPoint = location 
     touching = true 
    } 
} 
+0

CGFloatにキャストしてみるか、100.0 – koropok

+0

を試してみましたが、CGFloatにキャストするときに同じエラーが出て、100.0を使用するとdoubleを使用しています。 –

+0

キャストは意味をなさない。 CGPointを 'Double'や' CGFloat'のような単純なスカラーにキャストすることはできません。私の答えを見てください。 –

答えて

2

エラーが間違っている何を語っています。 CGPointは、xyの値を持つ構造体です。ポイントを単一の整数値と比較するのは意味がありません。

ポイントxまたはyの位置をポイント全体ではなく、ある値に比較する必要があります。

guard location < 100 else { return } 

代わり

guard location.y < 100 else { return } 

を読むかもしれません。

+0

Duncan、私は実行するプログラムを持っていましたが、ガードも機能していません。私のコードは、私が私が上にしたいと言ったことをするために設定されていますか? –

+0

質問を編集して、記事の最後に更新されたコードを表示してください。また、ガード・ステートメントを含む関数全体を表示します。そして、あなたが何をしたいのか教えてください。場所のxまたはyの位置が100以上の場合、関数を終了しますか? –

+0

@LeoDabus、あなた**は**ループの中に戻ることができます。それはループから抜け出し、関数から戻る。それを試してみてください。できます。 –

関連する問題