私には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. 画像がタッチされたかどうかを検出する方法
- 2. 画面がタッチされたかどうかを検出する
- 3. どのサブビューがプログラムでタッチされたかを検出する方法
- 4. どのGameObjectがタッチされたかを検出しますか?
- 5. どのuiviewがタッチされたかを検出する
- 6. SKSpriteNodeがタッチされたことを検出する方法
- 7. ドロウアブルがタッチされたときを検出する方法
- 8. タッチが検出されませんか?
- 9. サブクラス化されたノードですが、シーンのタッチを検出したい
- 10. 選択した子ノードが特定の子ノードであるかどうかを検出するにはどうすればよいですか?
- 11. imageViewのどの部分がタッチされたかを検出しますか?
- 12. javascriptを使ってノードからタッチ移動を検出する方法。
- 13. C# - ウェブサイトが訪問されたかどうかを検出する方法
- 14. シフトが解除されたかどうかを検出する方法は?
- 15. フレックス - オブジェクトデータが変更されたかどうかを検出する方法?
- 16. Windowsキーが押されたかどうかを検出する方法は?
- 17. QWebViewでマウスボタンが押されたかどうかを検出する方法は?
- 18. どのキーが押されたかを検出する方法
- 19. 入力がタッチされたかどうかを検出する(タブレット)またはクリックした(マウス)
- 20. サブスクライバがパブリッシャ側でパブリッシュされたメッセージを検出したかどうかを検出する方法
- 21. TreeViewユーザーが親ノードまたは子ノードをクリックしたかどうかを検出します
- 22. アクタがlibgdxでタッチされたときを検出する方法は?
- 23. 子スプライトのタッチを検出する方法
- 24. window.onbeforeunloadがトリガーされたときにリンクがクリックされたかどうかを検出する方法?
- 25. cytoscape.js - 親ノードに子ノードがあるかどうかを調べる方法
- 26. MPMoviePlayerViewControllerのタッチを検出する方法
- 27. Zebraプリンタがインストールされているかどうかを検出する方法
- 28. UIWebViewのタッチ検出方法
- 29. html要素が子ノードを追加できるかどうかをどのように検出しますか?
- 30. Android:親ビュー内でユーザーがタッチするかどうかを検出する
このコードはコンパイルされません –
@appzYourLifeそれもありません。あなたのポイントは何ですか? –
@appzYourLifeあなたはそれが迅速な2でコンパイルされないという事実を指していますか? –