我使用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的新手,关于如何解决这个问题的想法?
答案 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)
我不确定你是否不能直接设置锚点。