2015-05-11 2 views
0

Я хотел смешать 2 обучающие программы, а именно:SKPhysicsJointSpring между 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 (Пример: Центрирование Scene на узле часть)

У меня оба работают один за другим, но у меня есть ошибка, когда я смешиваю оба.

Если мой код начинается так:

[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]; так же, как и все время.

Любая идея, где я ошибаюсь?

+0

Вы не можете ожидать, что люди потратят время на чтение ссылок на учебники и выясняют, что не так. Укажите минимальный объем кода, необходимый для передачи вашей проблемы. – sangony

ответ

1

Когда я переместил части в _myWorld, как сказано в руководстве Apple, я не знал, что мне также нужно было перемещать опорные точки, так как они всегда находятся в координатах сцены.

Добавление этих строк решить эту проблему:

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.

Смежные вопросы