ios - एक इकाई के रूप में घूर्णन करते समय स्प्राइट नोड ओवरलैप करना



swift swift3 (1)

समस्या यह है कि आप एक त्रिकोण को घूर्णन कर रहे हैं, जो अपने निर्देशांक प्रणाली के अनुसार घूमते हैं। कल्पना कीजिए कि प्रत्येक त्रिकोण को केंद्र में पिन किया जाता है और उसके चारों ओर घुमाया जाता है स्पष्ट रूप से त्रिकोण ओवरलैप होंगे। आप उन्हें एक अनूठे बिंदु के चारों ओर घूमना चाहिए। आपके मामले में, ऐसा करने के लिए सबसे सरल तरीका उन्हें एक ही पैतृक नोड में जोड़ना है, और उसके बाद पैरेंट को घुमाएं:

// This is the configuration to do in sceneDidLoad
let node = SKNode()
node.addChild(blueTriLeft) 
node.addChild(redTriLeft)
node.addChild(yellowTriLeft)
node.addChild(greenTriLeft)
scene.addChild(node)

// Inside touchesBegan(_:, with:)
node.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))

स्विफ्ट 3 और स्प्राइटकिट का उपयोग करते हुए मेरे आवेदन को विकसित करते समय मुझे एक समस्या का सामना करना पड़ा है मैंने चार अलग त्रिकोण बनाए हैं जो टकराव का पता लगाने के लिए एक वर्ग बनाते हैं। जब मैं इन त्रिकोणों को एक इकाई के रूप में घुमाने के लिए जाता हूं तो वे रोटेशन के दौरान एक वर्ग के आकार (वे एक-दूसरे को ओवरलैप करते हैं) नहीं रखते हैं, लेकिन फिर रोटेशन पूर्ण होने के बाद सामान्य में वापस आ जाते हैं।

यह मैं रोटेशन के लिए उपयोग किया गया कोड है:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches{
        let location = touch.location(in: self)

        if location.x < 0 {
            blueTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
            redTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
            yellowTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
            greenTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))

        } else if location.x > 0 {
            blueTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
            redTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
            yellowTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
            greenTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
        }
    }
}

नीचे मेरे चार अलग त्रिभुज से बना वर्ग की एक तस्वीर है

कृपया मुझे किसी भी अन्य कोड के बारे में पूछने के लिए बेझिझक आपको देखने की जरूरत है, कोई इनपुट मदद करता है इसके अलावा मुझे कार्रवाई में ओवरलैपिंग मुद्दे को अग्रिम रूप से खेद नहीं मिला, लेकिन मैं इसे प्राप्त करने के लिए अपनी पूरी कोशिश करूंगा।





skspritenode