0

我正在使用 Sprite Kit (iOS),但每当我尝试SKPhysicsJointLimit向. 其他关节类型工作正常,这让我感到困惑。这是崩溃的示例:physicsWorldEXC_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()(并删除 line setting maxLength)或其他一些关节类型时,代码按预期工作。

我是 Sprite Kit 的新手,关于如何解决这个问题的任何想法?

4

1 回答 1

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)

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

于 2015-09-07T04:50:05.450 回答