2015-07-09 6 views
6

मैं नोड के भौतिकी को बदलने में सक्षम होना चाहता हूं जब उपयोगकर्ता नीचे की ओर स्वाइप करता है, लेकिन पूरे भौतिकी को रीसेट करने के अलावा यह कैसे पता नहीं कर पाता है।रन टाइम पर स्प्राइट नोड फिजिक्स बॉडी साइज बदलें

जब मैं मूल रूप से नोड लोड, मैं नीचे दिए गए कोड का उपयोग करें:

nodeHero.color = UIColor .grayColor() 
    nodeHero.size.width = 20 
    nodeHero.size.height = 45 
    nodeHero.position.x = -frame.size.width/2 + 45 
    nodeHero.position.y = pointMainY + 30 + nodeHero.size.height/2 
    nodeHero.zPosition = 110 

    nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height)) 
    nodeHero.physicsBody?.mass = 1 
    nodeHero.physicsBody?.angularVelocity = 0 
    nodeHero.physicsBody?.allowsRotation = false 
    nodeHero.physicsBody?.restitution = 0 
    nodeHero.physicsBody?.categoryBitMask = bitHero 

    addChild(nodeHero) 

और जब मैं नीचे स्वाइप करें, मैं इस तरह कुछ करने के लिए (यह काम नहीं करता) सक्षम होना चाहते हैं:

nodeHero.size.height = 28 
    nodeHero.physicsBody?.size.height = 28 

लेकिन बजाय मैं nodeHero.physicsBody = SKPhysicsBody() फिर से है, जो सभी अन्य physicsBody गुण रीसेट करता है उपयोग करने के लिए है, तो मैं यह करने के लिए है:

nodeHero.size.height = 28 

    nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height)) 
    nodeHero.physicsBody?.mass = 1 
    nodeHero.physicsBody?.angularVelocity = 0 
    nodeHero.physicsBody?.allowsRotation = false 
    nodeHero.physicsBody?.restitution = 0 
    nodeHero.physicsBody?.categoryBitMask = bitHero 
+0

यदि आप किसी नोड पर स्केल एक्शन चलाते हैं तो ऐसा लगता है कि इसका भौतिकी शरीर भी बदल जाएगा: https://stackoverflow.com/questions/24638086/scaling-physics-bodies-x-xpritekit/33572073#33572073 – peacetype

उत्तर

3

According to SpriteKit documentation एक SKPhysicsBody का क्षेत्र संशोधित नहीं किया जा सकता है, इसलिए आपको एक और SKPhysicsBody उदाहरण बनाने और उन मानों की प्रतिलिपि बनाने की आवश्यकता है जिन्हें आप पिछले उदाहरण से रखना चाहते हैं।

+0

रिकार्डो एमोरस सही है कि आप भौतिकी का आकार बदल नहीं सकते हैं रन समय पर आपको इसे फिर से बनाने की आवश्यकता है और अपने बनावट को वापस सौंपना है – dragoneye

संबंधित मुद्दे