2014-09-03 1 views
5

im mając następujący problem próbuje kod klona ptaków flappy w Xcode 6 beta 7 z Swift i SpriteKit.Swift SpriteKit PhysicsBody wymuszony jako opcjonalny przez Xcode

Po dodać właściwość physicsBody do SKSpriteNode nie mogę zmienić właściwość physicsBody bezpośrednio, na przykład nie mogę wykonać następujące czynności:

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 budowa zostanie zakończona z błędami na dwóch liniach, gdzie dodaję dynamiczne i allowsRotation wartości do physicsBody, jedyny sposób mogę to zrobić jest w następujący sposób: „?”

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

kwestia konieczności physicsBody jako opcja z bo to sprawia, że ​​wykonywanie pewnych operacji jest skomplikowane, gdy próbujemy manipulować jakąś fizyką ptaka, którą chciałem dodać, np. rotacja podczas przenoszenia.

Wszelkie sugestie dotyczące sposobu unikania/naprawy konieczności oznaczania właściwości physicsBody jako opcjonalnej? ("physicsBody?")

Dzięki!

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

Odpowiedz

1

go rozwiązać tworząc obiekt dla ciała SKPhysics i przypisanie go do Sprite po skonfigurowaniu go:

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

bird.physicsBody = body 
+0

To ciekawe, spróbuję, dzięki! –

2

Faktycznie, problem ten ma prostego sposobu, aby go naprawić. Możesz dodać! po physicsBody jak ten

bird.physicsBody!.dynamic = true 

Powód: wewnątrz kodu SKNode, widać to stwierdzenie:

var physicsBody: SKPhysicsBody? 

physicsBody jest Nullable Type.So XCode ma sprawdzić, aby zapobiec ty rozpakować nil wartość.

Powiązane problemy