2012-12-20 5 views
0

나는 CCSprite을 가지고 있는데, 이는 iPhone의 화면을 돌아 다닐 수 있습니다. 이 스프라이트의 자식 노드는 CCParticleSystemQuad입니다. 입자는 움직이는 스프라이트 뒤에있는 작고 단순한 원입니다. 스프라이트가 스크린 가장자리와의 충돌로 인해 회전 할 때까지 모든 것이 잘 작동합니다. 이 경우 기존 입자가 갑자기 이상한 위치에 그려집니다.CCParticleSystemQuad를 자식 노드로 사용하여 CCSprite를 회전

왜 이런 일이 발생하는지 알고 싶습니다.

지금까지 몇 가지 사항을 시도했습니다. 먼저 입자 시스템에 대해 세 개의 값을 모두 시도했습니다. 이들 중 어느 것도 회전 문제를 해결하지 못했습니다. 실제 회전은 CCRotateTo입니다. 이 동작을 제거하면 입자 위치 문제가 해결됩니다. 아마도 CCSprite 자식 노드를 CCLayer으로 돌리면 내 현재 CCSprite을 대체 할 수 있습니다. 나는 http://www.cocos2d-iphone.org/forum/topic/63951을 통해 독서를 시도했지만 그것은 내 머리 위로 조금입니다. 모든 의견과 제안은 크게 감사드립니다!

편집 # 1 빠른 픽스가 발견되었습니다. CCRotateTo 직전에 resetSystem으로 말합니다. 그러나 나는 이상한 그림 동작의 원인을 이해하고 싶다.

답변

1

CCParticleSystem이 CCSprite의 하위 요소이므로 스프라이트에서 수행하는 모든 위치 나 회전이 이미 방출 된 모든 입자의 동작에 영향을 미칠 것이라고 생각합니다. 따라서 여전히 화면에 남아있는 후행 입자가 있다면, 그들은 여전히 ​​CCSprite의 자식이며, 회전하면 남아있는 모든 입자가 스프라이트의 현재 위치를 중심으로 회전합니다.

이 효과를 없애려면 CCParticleSystem을 레이어에 추가하여 CCSprite의 회전에 영향을받지 않도록 할 수 있습니다. 이 접근법의 단점은 CCParticleSystem이 더 이상 CCSprite의 자식이 아니므로 CCSprite의 위치를 ​​추적하도록 코드를 추가해야한다는 것입니다. 그러나 꽤 쉬워야합니다.

관련 문제