2013-10-18 4 views
1

내 캐릭터에 손이 있습니다. SKSPriteNode가 거의 없으므로 SKSPriteNode는 SKSPriteNode가되어서 캐릭터 (손, 발 등)의 다양한 부분을 움직일 수 있고, 1 SKSpriteNode (SKNode로 교체를 시도했지만 동일했습니다) SKPhysicsBody를 사용합니다.SpriteKit : 다른 SKSpriteNodes가 포함되어 있지만 하나의 SKPhysicsBody가 포함 된 SKSpriteNode

씬의 레이어에 캐릭터를 추가하면 몸체가있는 스프라이트가 떨어지게됩니다.

내 질문과 문제 : 어떻게 모든 하위 스프라이트를 내 캐릭터 스프라이트에 보관할 수 있습니까? 내 캐릭터를 어떻게 유지할 수 있습니까?

아이디어를 제공해 주셔서 감사합니다.

편집 : 내 컨테이너 스프라이트에 연결된 본문과 함께 하위 스프라이트를 유지하려면 어떻게해야합니까?

답변

4

다시 편집 :

는 본체를 포함하여 캐릭터의 신체 부위를 모두 제어 할 SKNode를 사용하여 더 많은 유연성을 제공

SKNode (controller) 
    SKSpriteNode (head) 
    SKSpriteNode (body) 
    SKSpriteNode (leg1) 
    SKSpriteNode (leg2) 

.

이 트릭해야한다, 머리 "마스터"의 위치를 ​​확인하려면 :

-(void) didSimulatePhysics 
{ 
    self.parent.position = [self convertPoint:self.position toNode:self.parent.parent]; 
    self.position = CGPointZero; 
} 
+0

감사합니다. 저는 exacly하고 있습니다.하지만 물리학 몸체를 "머리"SKSpriteNode에만 부착하고 "머리"는 전체 "컨트롤러"를 움직일 필요가 있다고 가정 해 봅시다. "머리"가 중력에 반응하는 컨테이너를 떠나는 것이 아니라 "컨트롤러"를 "가져 오는"것이 필요합니다. 당신이 내가 무엇을 의미 하는지를 알기를 바랍니다 :) – Skiny

+0

위의 업데이트를 참조하십시오. – LearnCocos2D

+0

오, 내 생각은 똑같이 ... 나는 그것을 잊어 버렸습니다. 무리 감사! – Skiny

-1

가능한 해결책 : 하위 노드에서 SKPhysicBody를 제거하고 상위 노드에 추가하십시오.

+0

을하지만 난 SKPhysicsBody 내 캐릭터의 루트 노드가 아닌 자식 노드의 응답을 – Skiny

0

예상대로 중력에 반응하기 때문에 몸이 떨어지고 있습니다. 물리 체체가 없다면 다른 신체 부분은 당신이 그들을 두는 곳에 머무를 것입니다.

일부 옵션 : 모든 신체 부위는 물리학 몸 싶은 경우에 나는 즉 핀 조인트하는 관절에보고 제안

1.

- 예를 들어, 어깨 관절처럼 작동합니다.

바퀴가있는 자동차를 만들기위한 핀 조인트는 example입니다. 당신은 그냥 어떤 이유로, 움직이지하려면

2.

. 당신의 물리 구조에, 다만 이것을 놓으십시오. 내가 바로 당신을 이해하고있는 경우

bodyNode.physicsBody.dynamic = NO; 
+0

감사해야 , Smick. 예, 이해합니다.하지만 원하는만큼 정확한 것을 설명하지 않았습니다. 나는 (모든 자식 스프라이트를 포함하는) 캐릭터가 자식 스프라이트를 몸에 따라 가기를 원한다. 내 영어에 대한 질의, 당신이 지금 내 포인트를 가지고 희망 :) – Skiny

+0

@ LearnCocos2d의 조언을 따르십시오 - 그것이 작동하도록 노력하겠습니다. – DogCoffee

0

, 당신은

self.physicsWorld.gravity = CGVectorMake(0,0); 

이는 것이 없도록 할을 수행하여 SKScene에 중력이 0 말해서 시작 할 수는 화면의 문자가 떨어질 원인 화면에 적용된 중력에서 바닥으로 내려갑니다.

관련 문제