मैं अपने खिलाड़ी को कूदने की अनुमति देने की कोशिश कर रहा हूं। हालांकि मैं उसे मध्य हवा में कूदने नहीं दे सकता, इसलिए मुझे यह जांचने की ज़रूरत है कि क्या यह आवेग लगाने से पहले किसी अन्य नोड के शीर्ष पर खड़ा है या नहीं।जांचें कि क्या खिलाड़ी किसी अन्य नोड के शीर्ष पर है?
अन्य स्प्राइट-किट गेम सामान्य रूप से ऐसा कैसे करते हैं?
अभी मैं दो दृष्टिकोणों की कोशिश कर रहा हूं, पहला यह है। यह बहुत अच्छा है, हालांकि मुझे नहीं पता कि कैसे यह बताया जाए कि खिलाड़ी नोड को छू रहा है या नहीं, वास्तव में नीचे या खिलाड़ी के पक्ष में है।
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
var allowJump = false
let bodies = player.physicsBody.allContactedBodies()
for body : AnyObject in bodies {
if let node = body.node {
allowJump = true // Player is touching another node but we don't know where (the bottom of the player or it's sides)
}
}
}
यह, अन्य दृष्टिकोण है यह अगर कोई संपर्क शुरू कर दिया है और यह भी संपर्क जमीन (प्लेयर के नीचे) के साथ वास्तव में है कि क्या बता और एक दीवार या इस तरह के नहीं करने के लिए प्रभावी है। हालांकि मुझे नहीं पता कि खिलाड़ी कब किसी भी नोड्स के शीर्ष पर रुकता है, क्योंकि अगर कोई संपर्क समाप्त होता है तो भी वह किसी अन्य नोड से संपर्क कर सकता है।
func didBeginContact(contact: SKPhysicsContact!){
if(contact.bodyA.node.position.y < contact.contactPoint.y) {
println("BodyA is on top of another node")
}
if(contact.bodyB.node.position.y < contact.contactPoint.y) {
println("BodyB is on top of another node")
}
}
func didEndContact(contact: SKPhysicsContact!){
if(contact.bodyA.node.position.y < contact.contactPoint.y) {
println("BodyA is on no longer on top of BodyB")
}
if(contact.bodyB.node.position.y < contact.contactPoint.y) {
println("BodyB is no longer on top of BodyA")
}
}
समस्या यह है कि कोई आधार या कोई प्रकार का बॉक्स हो सकता है जहां खिलाड़ी खड़ा हो सकता है। – lisovaccaro
मैं देखता हूं, इसलिए एक सामान्य समाधान के लिए आपको SKPhysicsContactDelegate का उपयोग करना चाहिए - (शून्य) didBeginContact: (SKPhysicsContact *) संपर्क विधि, वेब पर कई उदाहरण हैं, मुझे लगता है कि आप आसानी से अपनी समस्या का समाधान कर सकते हैं –
मैंने उन्हें चेक किया, हालांकि वे संपर्क शुरू होने पर आग लगती है लेकिन मुझे नहीं पता कि कैसे पता चल सकता है कि नोड्स अद्यतन() विधि के अंदर छू रहे हैं या नहीं। मैं कुछ क्षणों में एक बक्षीस जोड़ूंगा! – lisovaccaro