2014-09-03 72 views
5

即時通訊有以下問題試圖編碼與Swift和SpriteKit在Xcode 6測試版7飛揚的鳥克隆。Swift SpriteKit PhysicsBody被迫作爲可選Xcode

後,我的physicsBody屬性添加到SKSpriteNode我不能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的構建將有錯誤的兩條線在這裏我添加失敗動態allowsRotation值PhysicsBody,我能做到這一點的唯一方法是通過執行以下操作:「?」有physicsBody可選用的

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

問題特徵在於,當試圖操縱我想要添加的一些鳥類物理時,它會使做某些操作變得複雜,例如移動時的旋轉。

有關如何避免/修復必須將physicsBody屬性標記爲可選的任何建議? ('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

啊這很有趣我會試試看,謝謝! – 2014-09-15 20:37:59

2

其實,這個問題有一個簡單的方法來解決它。 您可以添加!在physicsBody這樣

bird.physicsBody!.dynamic = true 

原因後: 裏面的SKNode代碼,你會看到這樣的語句:

var physicsBody: SKPhysicsBody? 

的physicsBody是可空Type.So的XCode不檢查,以防止你解開的零值。