SKPhysicsJointLimit EXC_BAD_ACCESS?

时间:2015-09-07 02:45:30

标签: ios sprite-kit skphysicsjoint

我使用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 个答案:

答案 0 :(得分:0)

应用程序崩溃,因为您没有设置关节的锚点属性。在文档中,anchorA

  

场景坐标系中第一个物体上的连接点。

anchorB

  

场景坐标系中第二个主体上的连接点。

以下是如何使用物理实体和锚点作为参数创建SKPhysicsJointLimit对象的示例:

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

我不确定你是否不能直接设置锚点。