私はスプライトキットゲームを持っていますが、ユーザーが画面の左、右、または中央(25/50/25)をタッチしたかどうかを確認しようとしています
画面の左端をタッチすると、0になるはずのx軸で-450にタッチしていると表示されます。シーンに対するタッチ位置を取得し、アンカーポイントが450ピクセルで始まると仮定します。右、0をタッチすると-450が表示されます。
これはサイドスクローラーであるため、アコーの移動は機能せず、画面のタッチ位置が必要です。
override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?){
var touchLeft : Bool = false
var touchRight : Bool = false
var touchMiddle : Bool = false
for touch in (touches) {
let location = touch.location(in: self)
if(location.x < self.size.width/4){
touchLeft = true
print("Left")
} else if(location.x > ((self.size.width/4) * 3)){
touchRight = true
print("Right")
} else {
touchMiddle = true
print("Middle")
}
}
}
関連した質問
- SwiftUIでアラートを作成する
- ネストされたforループ内のこのsqliteクエリが複数の結果を返さないのはなぜですか?
- Xcode 12(Swift 53)以降、ネストされたコレクションビューはセルの選択に応答しません
- 座標に向かう方向を見つける
- リアルタイムのテキスト認識のためにAppleのビジョンフレームワークを使用する方法を知っている人はいますか?
- SwiftUIlistRowBackgroundが機能していないようです
- RxSwift)1つの観測可能な2回のサブスクライブが機能しない
- TableView SwiftでネストされたJSON配列を解析する方法は?
- ファイルが「存在しない」ため、SwiftMoveItemが失敗する
- オブジェクト内のオブジェクトでCodableエンコードを使用する方法
あなたはほとんどそれを持っていました、ただ負の数を考慮してください。
知らなかった場合、SKSceneのデフォルトは0です。これは、デフォルトのアンカーポイントが0.5,0.5であるためです。
スクロールの処理にカメラを使用しているため、使用したい
touch.location(in: self.camera)
そのため、シーンの場所ではなく、カメラの場所に対して常にタッチします。したがって、コードを次のように変更します。