2014-09-03 10 views
5

द्वारा वैकल्पिक के रूप में मजबूर किया गया है जिसमें निम्नलिखित समस्या है जो स्विफ्ट और स्प्राइटकिट के साथ एक्सकोड 6 बीटा 7 में एक फ्लैपी पक्षियों क्लोन को कोड करने का प्रयास कर रहा है।स्विफ्ट स्प्राइटकिट भौतिकी को एक्सकोड

मैं एक SKSpriteNode को physicsBody संपत्ति जोड़ने के बाद मैं सीधे physicsBody की संपत्ति को बदल नहीं सकते, उदाहरण के लिए मैं निम्नलिखित नहीं कर सकते:

bird = SKSpriteNode(texture: birdTexture1) 
bird.position = CGPoint(x: self.frame.size.width/2.8, y: CGRectGetMidY(self.frame)) 
bird.runAction(flight) 
bird.physicsBody = SKPhysicsBody(circleOfRadius: bird.size.height/2) 
bird.physicsBody.dynamic = true 
bird.physicsBody.allowsRotation = false 

Xcode निर्माण दो पंक्तियों जहां मैं जोड़ने पर त्रुटियों के साथ असफल हो जायेगी physicsBody, एक ही रास्ता मैं यह कर सकता करने के लिए गतिशील और allowsRotation मान निम्न कार्य करके है: '?'

bird.physicsBody?.dynamic = true 
bird.physicsBody?.allowsRotation = false 

physicsBody साथ वैकल्पिक के रूप में होने के मुद्दे चरित्र यह है कि यह कुछ क्रियात्मक क्रियाओं को जटिल बनाने में जटिल बनाता है जब मैं कुछ पक्षी भौतिकी को जोड़ना चाहता हूं जो मैं जोड़ना चाहता था, जैसे चलते समय घूर्णन।

भौतिकी को चिह्नित करने से रोकने/ठीक करने के बारे में कोई सुझाव वैकल्पिक संपत्ति के रूप में बॉडी संपत्ति? ('भौतिकी बॉडी?')

धन्यवाद!

Screenshot of issue http://new.tinygrab.com/1afb7d57d73040945157fec7b418aa2caed4a72acd.png Zoom Screenshot of issue http://new.tinygrab.com/1afb7d57d7c7502078cab3568b6dc36285cc8dea51.png

उत्तर

1

मैं इसे SKPhysics शरीर के लिए एक वस्तु बनाने और यह कॉन्फ़िगर करने के बाद स्प्राइट के लिए यह बताए का समाधान:

let body = SKPhysicsBody(circleOfRadius: bird.size.height/2) 
body.dynamic = true 
body.allowsRotation = false 

bird.physicsBody = body 
+0

आह यह दिलचस्प है मैं इसे आज़मा दूंगा, धन्यवाद! –

2

वास्तव में, इस समस्या को ठीक करने के लिए एक आसान तरीका है। आप जोड़ सकते हैं! इस

bird.physicsBody!.dynamic = true 

कारण की तरह physicsBody के बाद:

var physicsBody: SKPhysicsBody? 

physicsBody है एक Nullable Type.So XCode आप नहीं के बराबर खोलने को रोकने के लिए जाँच करता है: SKNode कोड अंदर , तो आप इस बयान देखेंगे मूल्य।

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