2

所以我有一个我正在 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,然后将他添加到场景。

事实上,我的 SKScene 子类现在有一堆代码来添加所有引脚,而且感觉它不适合场景。想法?

4

1 回答 1

3

你不想anchorPoint用作锚。anchorPoint 属性是一个从 0 到 1 的因子,它影响纹理如何从精灵的位置偏移,即默认的 0.5/0.5 使精灵的纹理在精灵的位置上居中。换句话说anchorPoint,它不是一个位置,使用它会将身体和头部关节锚定到屏幕的左下角。

而是尝试使用胸部或头部的位置作为锚点,或两者之间的点。

于 2013-10-28T16:40:57.100 回答