SKPhysicsJointSpring介于2个不是场景直接子对象的对象之间

时间:2015-05-11 19:35:27

标签: ios objective-c sprite-kit

我想混合2个教程,即:

http://hub.ae/blog/2014/03/26/soft-body-physics-jellyusing-spritekit/

https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Actions/Actions.html (示例:在节点部件上居中场景)

我让两个人一个接一个地工作,但是当我混合两个时我都有一个错误。

如果我的代码是这样开始的:

[self setAnchorPoint:CGPointMake(0.5f, 0.5f)];
_myWorld = [SKNode node];
[self addChild:_myWorld]; 
[self createPlayer]; // I replaced all [self addchild's to [_myWorld addChild]

然后相机跟随玩家,但没有创建关节!

如果我将[self createPlayer]置于顶部并保留所有[self addchilds]原因(因为_myWorld尚未创建),那么有些关节工作正常,但相机并没有跟随玩家,因为玩家不在_myWorld。

我始终保持[self.physicsWorld addJoint:joint];

知道我哪里出错了?

1 个答案:

答案 0 :(得分:1)

当我按照Apple指南中的说法将部件移动到_myWorld时,我不知道我还必须移动锚点,因为它们总是在场景坐标中。

添加这些行解决了这个问题:

CGPoint p1 = [self.scene convertPoint:CGPointMake(point1.position.x+self.frame.size.width/2, point1.position.y+self.frame.size.height/2) fromNode:_myWorld];
CGPoint p2 = [self.scene convertPoint:CGPointMake(point2.position.x+self.frame.size.width/2, point2.position.y+self.frame.size.height/2) fromNode:_myWorld];

AttachPoint函数中。