SKPhysicsJointLimit EXC_BAD_ACCESS?

Я использую Sprite Kit (iOS), но всякий раз, когда я пытаюсь добавить SKPhysicsJointLimit к physicsWorldприложение вылетает с 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, есть идеи, как решить эту проблему?

1 ответ

Решение

Приложение падает, потому что вы не устанавливаете свойства точки привязки соединения. Из документов, anchorA является

Точка соединения на первом теле в системе координат сцены.

а также anchorB является

Точка соединения на втором теле в системе координат сцены.

Вот пример того, как создать SKPhysicsJointLimit объект с физическими телами и опорными точками в качестве аргументов:

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

Я не уверен, если вы не можете установить точки привязки напрямую.

Другие вопросы по тегам