所以我在雪碧包中制作了一个提线木偶,并把他放在一个场景中。我已经创建了一个Marionette类,它是SKNode的一个子类,当我创建这个类的一个实例时,我会相互添加一些SKSpriteNodes。这应该会让你对它的工作原理有一个概念(我已经剪掉了不必要的代码行):
[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 )。原来,在添加关节之前,我必须将木偶添加到整体SKScene中。
我猜这是有道理的,但我不禁想,应该有一些方法,我可以在Marionette类中设置一切,然后在场景中粘贴两行代码来创建一个新的Marionette,然后将他addChild到场景中。
实际上,我的SKScene子类现在有一堆代码来添加所有的引脚,它感觉它不适合场景。有什么想法?
发布于 2013-10-29 00:40:57
您不希望使用anchorPoint作为锚点。anchorPoint属性是一个范围从0到1的因子,它影响纹理如何从精灵的位置偏移,即默认的0.5/0.5使精灵的纹理在精灵的位置居中。换句话说,anchorPoint不是一个位置,使用它会将body & head关节锚定在屏幕的左下角。
取而代之的是尝试使用胸部或头部的位置作为锚,或者两者之间的点。
https://stackoverflow.com/questions/19639778
复制相似问题