所以我在 Sprite Kit 中制作了一个木偶,并将他放置在场景中。我创建了一个 Marionette 类,它是 SKNode 的子类,当我创建该类的实例时,我将多个 SKSpriteNode 相互添加。这应该会让您了解它是如何工作的(我已经剪掉了不必要的行):
[self addChild:self.head];
[self.head addChild:self.chest];
[self.chest addChild:self.leftLeg];
[self.chest addChild:self.rightLeg];
[self.leftLeg addChild:self.leftFoot];
[self.rightLeg addChild:self.rightFoot];
所以,完成此操作后,我的木偶就出现了。我想向每个连接添加 SKPhysicsJointPin。代码如下所示:
self.chestPin = [SKPhysicsJointPin jointWithBodyA:self.marionette.head.physicsBody bodyB:self.marionette.chest.physicsBody anchor:self.marionette.chest.anchorPoint];
起初我以为我可以在 Marionette 类中设置所有引脚,但这不起作用(如果我记得的话,我会得到 EXC_BAD_ACCESS)。事实证明,在添加关节之前,我必须将 Marionette 添加到整个 SKScene 中。
我想这是有道理的,但我忍不住想应该有某种方法可以在 Marionette 类中设置所有内容,然后在场景中粘贴 2 行代码来创建一个新的 Marionette,然后 addChild他到了现场。
事实上,我的 SKScene 子类现在有一堆代码来添加所有引脚,但感觉它不适合场景。想法?
最佳答案
您不想使用anchorPoint
作为 anchor 。 anchorPoint 属性是一个范围从 0 到 1 的因子,影响纹理与 Sprite 位置的偏移方式,即默认的 0.5/0.5 使 Sprite 纹理位于 Sprite 位置的中心。换句话说,anchorPoint
不是一个位置,使用它会将 body 和头部关节锚定到屏幕的左下角。
尝试使用胸部或头部的位置作为 anchor ,或者两者之间的点。
关于ios - 将 SKPhysicsJoint 添加到对象的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19639778/