6

Swift と SpriteKit を使用して Xcode 6 ベータ 7 でゆるい鳥のクローンをコーディングしようとすると、次の問題が発生します。

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 のビルドは、動的な値と allowRotation の値を PhysicsBody に追加する 2 行でエラーが発生して失敗します。これを行う唯一の方法は、次の手順を実行することです。

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

「?」を使用してオプションとしてphysicsBodyを持つ問題。キャラクターは、移動時の回転など、追加したかったいくつかの鳥の物理を操作しようとすると、特定の操作を行うのが複雑になることです。

physicalsBody プロパティをオプションとしてマークする必要を回避/修正する方法に関する提案はありますか? ('物理ボディ?')

ありがとう!

問題のスクリーンショット
(ソース: tinygrab.com )

問題のズーム スクリーンショット
(ソース: tinygrab.com )

4

2 に答える 2

2

実は、この問題には簡単な修正方法があります。あなたは付け加えられます !このような物理体の後

bird.physicsBody!.dynamic = true

理由: SKNode コード内に、次のステートメントが表示されます。

var physicsBody: SKPhysicsBody?

physicsBody は Nullable Type です。そのため、XCode は、nil 値のアンラップを防止するためにチェックを行います。

于 2014-09-19T07:33:48.837 に答える
1

SKPhysics 本体のオブジェクトを作成し、それを構成した後にスプライトに割り当てることで解決します。

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

bird.physicsBody = body
于 2014-09-15T15:57:33.670 に答える