2012-04-18 2 views
4

내 게임에서 나는이 CCSprite의 궤도를 도는 전자를 핵 주위의 궤도와 비슷하게 가지고 있습니다. 나는 전자를 핵의 자식으로 가지고있어서 애니메이션을 훨씬 더 단순하게 만든다. 내가해야 할 일은 핵을 회전시키는 것 뿐이고 전자는 스위트를 아주 잘 따라 간다.cocos2d에서 CCSprite의 절대 위치 얻기

그러나 내 문제는 입자 시스템 트레일과 같은 것을 추가하거나 전자의 경로를 따라 리본 효과를 추가하여 궤도 애니메이션을 좀 더 멋지게 보이게하려는 것에서 비롯됩니다. 입자 자체가 핵에 의해 회전되기 때문에 입자가 정확하게 따라 가지 않기 때문에 입자 시스템을 단순히 전자 자체에 추가 할 수는 없습니다. 입자 시스템을 self에 추가하면 입자 시스템이 올바르게 나타나지만 후행으로 간주 될 객체와 같은 위치에 나타나지 않습니다.

내 질문은 이것이다 : 그것은 그 부모에 그 상대적인 위치입니다 만 가지고 접근에 반대

객체의 현장 위치를 ​​얻을 수있는 방법이 있나요, 전자는 말?

감사합니다.

답변

8

예!

각 CCNode 그 후손 장면에 대한 상대 위치를 얻을 수있는 능력을 가지고

CGPoint worldCoord = mySprite는 convertToWorldSpace : mySprite.position];

이 worldCoordinate는 부모 노드가 아닌 장면과 관련됩니다!

희망이 도움이되었습니다!^_^

+0

그것을 사랑하는 이유 어쩌면 누군가가 설명 할 것입니다! 지금 해보겠습니다. 정말 고마워! – GreenWire

+0

아름다운 !! 고마워, 완벽하게 작동합니다. – GreenWire

+0

위치를 얻는 것은 좋지만 위치가 변경되었다는 것을 어떻게 결정할 수 있습니까 (물리 엔진 당)? 그것은'setPosition :'을 무시하는 것으로 보이지 않습니다. : \ – Olie

4

후속의 편집 :

당신이 할 :

[aSprite convertToWorldSpace:position]; 

당신은 실제로 aSprite의 좌표계의 위치의 글로벌 좌표를 얻고있다. aSprite의 위치를 ​​전역 공간으로 변환하려면 sprite.position이 이미 부모 좌표계에 있으므로 부모에게 번역을 요청해야합니다.

는 그것이


원래 대답을 설명 희망 :

나를 위해이 솔루션은

를 작동하지 않았다 나는 mySprite는 아이가있는 CCSprite의 하위 2 계층 구조를 가지고 있었다 장면의> mySpriteParent - -> mySprite는

mySprite.position:29,254 
mySpriteParent.position:533,57 

Solution1 - 잘못된 myScene :

결론 :

CGPoint worldCoord = [[mySprite parent]convertToWorldSpace: mySprite.position]; 

이 내 솔루션을 필요로하는 계층 구조입니다 :이 코드는 나를 위해 문제를 해결 결과 :

[mySprite convertToWorldSpace: mySprite.position]:91,418 

해결책 2 - 올바른 결과 :

[[boxSprite parent] convertToWorldSpace:boxSprite.position]:253.5,275.5 

아마도이 솔루션은 사람 도움이 될 것입니다 그리고이 솔루션이 작동하지 다른

+0

+1이 답변은 더 좋습니다 :-) – Jonny