में ऑब्जेक्ट के बच्चे नोड पर स्पर्श का पता लगाएं मेरे पास एक कस्टम क्लास है जो एक एसकेएनोड है, जिसके बदले इसमें कई SKSpriteNodes हैं। क्या मेरे पास इस खेल के दृश्य से इन बच्चों के एसकेएसप्रेट नोड्स पर छूने का कोई तरीका है?SpriteKit
मैं तेजी से
में ऑब्जेक्ट के बच्चे नोड पर स्पर्श का पता लगाएं मेरे पास एक कस्टम क्लास है जो एक एसकेएनोड है, जिसके बदले इसमें कई SKSpriteNodes हैं। क्या मेरे पास इस खेल के दृश्य से इन बच्चों के एसकेएसप्रेट नोड्स पर छूने का कोई तरीका है?SpriteKit
मैं तेजी से
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject() as UITouch
let touchLocation = touch.locationInNode(self)
if([yourSprite containsPoint: touchLocation])
{
//sprite contains touch
}
}
स्रोत में काम कर रहा हूँ: http://www.raywenderlich.com/84434/sprite-kit-swift-tutorial-beginners
आप
आप स्थान प्राप्त कर सकते हैं अपने SKNode के स्थान पर अपने टच के स्थान की तुलना करनी होगी locationInNode():
की जांच एप्पल के SceneKitVehicle डेमो। कृपया कोई ported it to Swift।
जो कोड आप चाहते हैं वह गेमView.swift फ़ाइल में है। GameView में आप स्पर्श देखेंगेगन ओवरराइड। स्विफ्ट 2.1:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
guard let scene = self.overlaySKScene else {
return
}
let touch = touches.first!
let viewTouchLocation = touch.locationInView(self)
let sceneTouchPoint = scene .convertPointFromView(viewTouchLocation)
let touchedNode = scene.nodeAtPoint(sceneTouchPoint)
if (touchedNode.name == "Play") {
print("play")
}
}
यदि यह स्पष्ट नहीं है, तो इसका मेरा संस्करण यहां है; GameView को स्टोरीबोर्ड के माध्यम से ऐप के व्यू क्लास के रूप में सेट किया गया है।
कुछ और विवरण कृपया – user3138007