I am making a SpriteKit game that has a button node that is at the highest zPosition. I am overriding the touchesBegan function to add functionality to the button. It works because that button is at the highest position in the z dimension. The .zPosition is set to the highest amount compared to any other nodes. I need to have another button in the scene but it needs to have a lower .zPosition because it needs to be covered by another node at one point. When I have a .zPosition that is lower than another node, the touchesBegan method does not trigger. It works if I have a higher .zPosition but that makes the other button node not work. How can I make the touchesBegan method work regardless of what the .zPosition is? Please ask me for more clarification. Thanks!
SpriteKit: How to make touchesBegan work for node not on the highest zPosition
210 Views Asked by Joe At
2
There are 2 best solutions below
0
JohnL
On
You want to use the nodes(at:) method. This is an array of all nodes at a particular point, the point being where you touch.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for t in touches {
let location = t.location(in: self)
let touchedNodes = self.nodes(at: location) // Array of all nodes at the point
for node in touchedNodes { // Iterate through all nodes in the touchedNode array
if node.name == "your button node" {
... // Add your button code here
}
}
}
}
Related Questions in IOS
- URLSession requesting JSON array from server not working
- Incorrect display of LinearGradientBrush in IOS
- Module not found when building flutter app for IOS
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Occasional crash at NSURLSessionDataTask dataTaskWithRequest:completionHandler:
- Expo Deep linking on iOS is not working (because of Google sign-in?)
- On iOS, the keyboard does not offer a 6-character SMS code
- Hi, there is an error happened when I build my flutter app, after I'm installing firebase packages occurs that error
- The copy/paste functionalities don't work only on iOS in the Flutter app
- Hide LiveActivityIntent Button from Shortcuts App
- While Running Github Actions Pipeline: No Signing Certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID
- Actionable notification api call not working in background
- Accessibility : Full keyboard access with scroll view in swiftui
- There is a problem with the request entity - You are not allowed to create 'iOS' profile with App ID 'XXXX'
- I am getting "binding has not yet been initialized" error when trying to connect firebase with flutter
Related Questions in SWIFT
- Navigate after logged in with webservice
- URLSession requesting JSON array from server not working
- When using onDrag in SwiftUI on Mac how can I detect when the dragged object has been released anywhere?
- Protect OpenAI key using Firebase function
- How to correct error: "Cannot convert value of type 'MyType.Type' to expected argument type 'Binding<MyType>'"?
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Using @Bindable with a Observable type in SwiftUI
- How to make a scroll view of 9 images in a forEach loop open on image 6 if image 6 is clicked on from a grid?
- Using MTLPixelFormat.rgba16Float results in random round-off errors
- Search and highlight text of current text in PDFKit Swift
- How is passing a function as a parameter related to escaping autoclosure?
- Actionable notification api call not working in background
- Custom layout occupies all horizontal space
- Is it possible to fix slow CKAsset loading on Cloudkit?
- Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value - MapView.isMyLocationEnabled
Related Questions in SPRITE-KIT
- Label not showing on Tutorial SKScene
- How to create a mini-map of a SpriteKit scene using a different camera position
- Get name of SKTextureatlas
- Determine whether player character is at rest on static node
- How to detect the location of a mouseDown event for a iOS App using Swift?
- Update node's physicsbody with texture animation?
- How to detect touch inputs in SKScene on watchOS SpriteKit?
- Get actual size of applied texture to physicsBody?
- Changing a texture on a custom spritenode class drops the framerate, but only the first time?
- Swift Playground does not find SpriteKit particle file
- Why is SKTextureAtlas(dictionary:) Crashing
- SpriteKit animations freeze in second window on second display on Apple Silicon
- How to prevent SpriteKit overlay in SceneKit to get all key down events
- How can I Wrap a SKScene around a SCNNode as its texture?
- Prevent SpriteKit Metal Renderer from Exceeding Texture Size limit
Related Questions in SKSPRITENODE
- Changing a texture on a custom spritenode class drops the framerate, but only the first time?
- Sprite from SKScene not running actions
- Flag when two sk nodes intersect
- SKSpriteNode passing through SKShapeNode with multiple paths and high speed in Swift SpriteKit
- Swift. SKSpriteNode as a button
- what way can i adjust the position of an skspritenode when it's frame intersects another skspritenode's to prevent them from overlapping?
- is it okay to call a run SKAction method inside of the update function?
- Why won't my fragment shader apply to the texture of my door object node in the view of the scene in spritekit?
- How to use SKScene's didBegin to detect when Sprite Node hits enclosure?
- How can I properly rotate SKSpriteNodes about a point other than the origin?
- Can you add a UIButton be used as the UI for a SKSpriteNode?
- Swift: SKNode `contains(_:)` not always working
- Can setScale() on an SKCameraNode exclude certain children?
- Is there a way to extract info from the .sks file, e.g. a SKSpriteNode’s position?
- CIGaussianFilter is not centering effect
Related Questions in TOUCHESBEGAN
- Detecting touching a SKSpriteNode within a touchesBegan event?
- Animation not working on touchesBegan button highlight
- Moving SpriteKit Node with Touch Gestures only moves one point with each new touch
- Detect palm touching/releasing the iphone screen
- UIView touchesBegan won't fire when UILongPressGestureRecognizer minimumPressDuration zero
- SpriteKit: How to make touchesBegan work for node not on the highest zPosition
- UIView appear at the top left of the screen
- SKScene touchesBegan only registering first touch when presented from SpriteView
- Dismiss UIView within ViewController by tapping outside of UIView
- line drawing away from touch point
- copy object and place it on the view
- draw line using uibezierPath in a vertical way
- draw a straight line with a starting touch point
- get line to remain a perfect 90 degrees when create
- swift SpriteNode and SceneKit multiple touch gestures
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Once you get the point in touchesBegan did you try to test if the button node contains the point :