0

スプライト キット (iOS) を使用していますが、 に を追加しようとするSKPhysicsJointLimitphysicsWorld、アプリが でクラッシュしEXC_BAD_ACCESS (code=1, address=0xc0)ます。他のジョイント タイプは問題なく動作しますが、これが私を混乱させています。クラッシュするものの例を次に示します。

var node1 = SKSpriteNode(color: SKColor.blueColor(), size: CGSize(width: 50, height: 50))
node1.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 50, height: 50))
self.addChild(node1)

var node2 = SKSpriteNode(color: SKColor.blueColor(), size: CGSize(width: 50, height: 50))
node2.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 50, height: 50))
self.addChild(node2)

var joint = SKPhysicsJointLimit()
joint.maxLength = 1000
joint.bodyA = node1.physicsBody
joint.bodyB = node2.physicsBody
self.physicsWorld.addJoint(joint)

置き換える(および線の設定SKPhysicsJointLimit()SKPhysicsJointFixed()削除するmaxLength) またはその他のジョイント タイプを使用すると、コードは期待どおりに機能します。

私は Sprite Kit を初めて使用しますが、これを解決する方法についてのアイデアはありますか?

4

1 に答える 1

0

ジョイントのアンカー ポイント プロパティを設定していないため、アプリがクラッシュしています。ドキュメントからanchorA

シーンの座標系の最初のボディの接続ポイント。

そしてanchorB_

シーンの座標系における 2 番目のボディの接続ポイント。

SKPhysicsJointLimit以下は、引数として物理ボディとアンカー ポイントを使用してオブジェクトを作成する方法の例です。

    let joint = SKPhysicsJointLimit.jointWithBodyA(node1.physicsBody!, bodyB: node2.physicsBody!, anchorA: node1.position, anchorB: node2.position)
    joint.maxLength = 1000
    physicsWorld.addJoint(joint)

アンカーポイントを直接設定できないかどうかはわかりません。

于 2015-09-07T04:50:05.450 に答える