2014-09-24 6 views
5

मैं anchorPoint नीचे स्क्रीनशॉट पर हरे रंग के बिंदु के रूप में चिह्नित पर SKPhysicsJointPin का उपयोग कर दो SKSpriteNode के कनेक्ट करने के लिए कोशिश कर रहा हूँ। बाद में मैं ऑब्जेक्ट 2 पर "स्विंग एनीमेशन" प्राप्त करने के लिए ऑब्जेक्ट 2 पर physicsBody!.dynamic = true सक्षम करना चाहता हूं।कैसे दो SKSpriteNode के SKPhysicsJointPin का उपयोग कर कनेक्ट करने के लिए - तेजी से

enter image description here

enter image description here

मैं जबकि SKPhysicsJointPin बनाने भी मैं एक त्रुटि Xcode में यह संकलन नहीं करता है नहीं मिलता है बहुत शुरुआत में कठिनाई हो रही हूँ।

कोड यह रहा:

import SpriteKit 

class GameScene: SKScene, SKPhysicsContactDelegate { 

let object1 = SKSpriteNode(imageNamed: "white") 
let object2 = SKSpriteNode(imageNamed: "black") 

override func didMoveToView(view: SKView) { 
    // Setup background image 
    self.backgroundColor = UIColor(hex: 0x60c0f3) 

    // Setup physics body to the scene (borders) 
    self.physicsBody = SKPhysicsBody (edgeLoopFromRect: self.frame) 

    // Change gravity settings of the physics world 
    self.physicsWorld.gravity = CGVectorMake(0, -9.8) 
    self.physicsWorld.contactDelegate = self 

    //=========================================== 

    // White object properties 
    object1.physicsBody = SKPhysicsBody(rectangleOfSize: object1.frame.size) 
    object1.physicsBody!.dynamic = false 
    object1.position = CGPointMake(size.width/2 - object1.size.width/2, size.height/2) 

    // Black object properties 
    object2.physicsBody = SKPhysicsBody(rectangleOfSize: object2.frame.size) 
    object2.physicsBody!.dynamic = true 
    object1.anchorPoint = CGPointMake(0, 0) 
    object2.position = CGPointMake(size.width/2 + object2.size.width + 2, size.height/2 + object2.size.height/2) 

    // Create joint between two objects 
    var myJoint = SKPhysicsJointPin.jointWithBodyA(object1.physicsBody, bodyB: object2.physicsBody, anchor: CGPoint(x: CGRectGetMaxX(self.object1.frame), y: CGRectGetMaxY(self.object2.frame))) 

    self.physicsWorld.addJoint(myJoint) 
    self.addChild(object1) 
    self.addChild(object2) 

} 

override func update(currentTime: CFTimeInterval) { 
    /* Called before each frame is rendered */ 
} 
} 

Xcode त्रुटि मैं मिलता है enter image description here

कृपया सलाह क्या मेरी कोड में गलत है। धन्यवाद।

उत्तर

2

दो मुद्दे: 1) आपको भौतिक विज्ञान निकायों को नोड्स को जोड़कर जोड़ने के लिए दृश्य में जोड़ने की जरूरत है और 2) आपको न्यूनतम वाई मान पर नोड्स को अधिकतम से कनेक्ट करने की आवश्यकता नहीं है (यदि आप चाहते हैं आपके आरेख में दिखाए गए व्यवहार के लिए संयुक्त), क्योंकि दृश्य की उत्पत्ति दृश्य के नीचे/बाएं कोने है और सकारात्मक वाई ऊपर है।

// Do this prior to adding the joint to the world 
    self.addChild(object1) 
    self.addChild(object2) 

    // Create joint between two objects. Edit: changed MaxY to MinY to attach bodies 
    // at bottom of the nodes 
    var myJoint = SKPhysicsJointPin.jointWithBodyA(object1.physicsBody, bodyB: object2.physicsBody, anchor: CGPoint(x: CGRectGetMaxX(self.object1.frame), y: CGRectGetMinY(self.object2.frame))) 

    self.physicsWorld.addJoint(myJoint) 
+0

धन्यवाद! इसने काम कर दिया :) – Omen

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

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