2013-10-13 11 views
10

मैं दो SKPhysicsBodies के बीच सरल जोड़ बनाने की कोशिश कर रहा हूं। लेकिन, वे अजीब अभिनय कर रहे हैं। मैं इस तथ्य से अच्छी तरह से अवगत हूं कि एंकर पॉइंट दृश्य समन्वय पर होना चाहिए। संलग्न स्रोत कोड पर एक नज़र डालें।स्प्राइटकिट: मूल भौतिकी जोड़ों को कैसे बनाएं

उदाहरण के लिए आयताकार पर एक छोटे वर्ग को जोड़ने के बाद एक निश्चित संयुक्त परिणाम कैसे होते हैं।

-(void)createFixedJointOnScene:(SKScene*)scene 

{

//Adding Rectangle 

    SKSpriteNode* backBone = [[SKSpriteNode alloc] initWithColor:[UIColor whiteColor] size:CGSizeMake(20, 200)]; 
backBone.position = CGPointMake(CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame)/2.0); 
backBone.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:backBone.size]; 
backBone.physicsBody.categoryBitMask = GFPhysicsCategoryRectangle; 
backBone.physicsBody.collisionBitMask = GFPhysicsCategoryWorld; 
[scene addChild:backBone]; 

//Adding Square 
SKSpriteNode* head = [[SKSpriteNode alloc] initWithColor:[SKColor grayColor] size:CGSizeMake(40, 40)]; 
head.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:head.size]; 
head.position = CGPointMake(backBone.position.x, backBone.position.y-40); 
head.physicsBody.categoryBitMask = GFPhysicsCategorySquare; 
head.physicsBody.collisionBitMask = GFPhysicsCategoryWorld; 
[scene addChild:head]; 

//Pinning Rectangle and Square 
NSLog(@"Head position %@", NSStringFromCGPoint(head.position)); 
SKPhysicsJointFixed* pin =[SKPhysicsJointFixed jointWithBodyA:backBone.physicsBody bodyB:head.physicsBody anchor:head.position]; 
[self.physicsWorld addJoint:pin]; 

}

enter image description here

https://dl.dropboxusercontent.com/u/62559842/PhysicsTest.zip

धन्यवाद।

+1

मेरी उदाहरण जाँच यहाँ http://stackoverflow.com/questions/19342417/sprite-kit-pin-joints-appear-to-have-an-incorrect-anchor – DogCoffee

+1

आपको बहुत बहुत धन्यवाद। – Bavan

+0

@ बावन: मैंने स्प्राइट नोड्स के लिए संयुक्त कोड का उपयोग किया है। लेकिन यह मेरे spritenode की स्थिति बदलता है। क्या आप मेरी मदद कर सकते हैं ? – Nirav

उत्तर

13

धन्यवाद धन्यवाद .. मेरे साथ Smick के कोड की तुलना करने के बाद मुझे पता चला कि इन दो लाइनों का क्रम मुद्दा पैदा कर रहा है।

head.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:head.size]; 
head.position = CGPointMake(backBone.position.x, backBone.position.y-40); 

मैं अपने भौतिक विज्ञान शरीर की स्थापना से पहले स्प्राइट की स्थिति सेट करते हैं, सब कुछ सही ढंग से काम करने के लिए शुरू कर दिया।

head.position = CGPointMake(backBone.position.x, backBone.position.y-40); 
head.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:head.size]; 

अब मैंने स्मिक कोड को पूर्ण कोड में भी संलग्न किया है और यहां लिंक संलग्न किया है। का आनंद लें।

https://dl.dropboxusercontent.com/u/62559842/PhysicsTest_Final_Working.zip

+1

यह आईओएस 7.0.x में एक बग है जो 7.1 में तय किया गया था। – 0x141E

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