2015-09-07 58 views
0

我使用Sprite Kit(iOS),但每当我尝试将SKPhysicsJointLimit添加到physicsWorld时,该应用程序都会与EXC_BAD_ACCESS (code=1, address=0xc0)崩溃。其他关节类型正常工作,这是令我困惑的。这是一个什么样的崩溃例如:SKPhysicsJointLimit EXC_BAD_ACCESS?

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,关于如何解决这个问题的任何想法?

回答

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) 

我不知道,如果你不能直接设置锚点。