私にはSKSpriteNode
があります。このSKSpriteNode
には複数の子供がいます。タッチされたかどうかをどのように検出できますか?さて、SpriteKitにボタンを設定することはすでに分かっています。メインの親ノードに触れたかどうかを検出するのに使ったのと同じコードを使ってみましたが、うまくいきませんでした。ボタンは何もしません。これを修正する方法はありますか?また、私はすでに、子ノードのユーザー対話をtrueに設定しようとしました。子ノードがタッチされたかどうかを検出する方法:スプライトキット
答えて
ここでは、連続したタッチ(矢印など)を追跡する方法の1つです。
あなたはSKSceneノードで、または親ビューコントローラでは、タッチを追跡する必要があります。
var touches = Set<UITouch>()
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.touches.formUnion(touches)
self.updateTouches()
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
self.touches.formUnion(touches)
self.updateTouches()
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
self.touches.subtract(touches)
self.updateTouches()
}
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
self.touches.subtract(touches)
self.updateTouches()
}
各タッチについて、SKNodeに対する相対座標に変換します。タッチのいずれかがSKNodeの累積フレーム内にあるかどうかを確認します。累積されたフレームは、ノードとその子孫の合計境界領域です。例えば
private func isTouching(node: SKNode) -> Bool {
guard let parent = node.parent else {
return false
}
let frame = node.calculateAccumulatedFrame()
for touch in touches {
let coordinate = touch.location(in: parent)
if frame.contains(coordinate) {
return true
}
}
return false
}
:
override func update(_ currentTime: NSTimeInterval) {
let touchingJump = isTouching(node: jumpButtonNode)
if touchingJump {
print("jump")
}
}
あなたはこの方法にあなたがタッチイベントを監視したいすべてのノードに関連付けられたクラスの
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("Touched")
}
を実装する必要があります。したがって、このメソッドをメインの子孫のすべてに追加する必要がありますSKSpriteNode
。
このコードは何もしません。 –
@ LukeVanIn:自分のメソッドにプリントを追加しました。ヒントありがとうございます。 –
「タッチイベントを監視するすべてのノードに関連付けられたクラスでこのメソッドを実装する」とはどういう意味ですか?このメソッドをメインのSKSpriteNodeのすべての子孫に追加する必要がありますか?コード内のどこにありますか?私は印象の下でtouchesBeganはSKViewでしか動作しませんでした...しかし、私は混乱しています... – Confused
- 1. 子ノードがタッチされたかどうかをチェックする方法Swift 3
- 2. 画像がタッチされたかどうかを検出する方法
- 3. 画面がタッチされたかどうかを検出する
- 4. どのサブビューがプログラムでタッチされたかを検出する方法
- 5. どのGameObjectがタッチされたかを検出しますか?
- 6. どのuiviewがタッチされたかを検出する
- 7. ドロウアブルがタッチされたときを検出する方法
- 8. SKSpriteNodeがタッチされたことを検出する方法
- 9. タッチが検出されませんか?
- 10. スプライトが特定の間隔でタッチされていないかどうかを検出する方法
- 11. imageViewのどの部分がタッチされたかを検出しますか?
- 12. どのチェックボックスがタッチされたかを検出しますか? Array Java Android Studio
- 13. サブクラス化されたノードですが、シーンのタッチを検出したい
- 14. 選択した子ノードが特定の子ノードであるかどうかを検出するにはどうすればよいですか?
- 15. Windowsキーが押されたかどうかを検出する方法は?
- 16. シフトが解除されたかどうかを検出する方法は?
- 17. QWebViewでマウスボタンが押されたかどうかを検出する方法は?
- 18. Selenium C#Webdriverボタンがクリックされたかどうかを検出する方法
- 19. フレックス - オブジェクトデータが変更されたかどうかを検出する方法?
- 20. C# - ウェブサイトが訪問されたかどうかを検出する方法
- 21. javascriptを使ってノードからタッチ移動を検出する方法。
- 22. 入力がタッチされたかどうかを検出する(タブレット)またはクリックした(マウス)
- 23. どのキーが押されたかを検出する方法
- 24. サブスクライバがパブリッシャ側でパブリッシュされたメッセージを検出したかどうかを検出する方法
- 25. TreeViewユーザーが親ノードまたは子ノードをクリックしたかどうかを検出します
- 26. アクタがlibgdxでタッチされたときを検出する方法は?
- 27. 子スプライトのタッチを検出する方法
- 28. ドッカーコンテナがクラッシュしたかどうかを検出する方法
- 29. window.onbeforeunloadがトリガーされたときにリンクがクリックされたかどうかを検出する方法?
- 30. 親ノードに子ノードがないかどうかを確認する方法
このコードはコンパイルされません –
@appzYourLifeそれもありません。あなたのポイントは何ですか? –
@appzYourLifeあなたはそれが迅速な2でコンパイルされないという事実を指していますか? –