2012-02-08 3 views
0

Я немного поработал с системой частиц в cocos2d-iphone и ParticleDesigner, и я использую CCParticleBatchNode, чтобы получить хорошую производительность, поскольку у меня есть много одного и того же излучателя. Это отлично работает для взрывов, но теперь я хотел бы иметь дым выхлопных газов на своих кораблях, но здесь я застрял.Использование CCParticleBatchNode и CCParticleSystemQuad для создания дыма дыма, который перемещается с помощью CCSprite

Я не могу добавить CCParticleBatchNode в свой CCSprite, поскольку они могут быть добавлены только один раз, и он используется повторно для всех выхлопов, но как я могу заставить мой CCParticleBatchNode следовать или придерживаться моего CCSprite?

Также система частиц выхлопных газов, которую я сделал с ParticleDesigner, имеет силу тяжести/направление, но когда мой CCSprite всегда движется, то это неправильно, если они просто излучают частицы в одном месте, и движение излучателя создаст след , или?

Как делаются ребята?

ответ

1

, конечно, вы не можете добавить ParticleBatchNode к спрайта (таким же образом, вы не можете добавить частицу, если спрайт были использованы в SpriteBatchNode)

решать подобные проблемы, я использую, чтобы наследовать класс от ccsprite, скажем, MySprite, а затем переопределить положение сеттер

-(void) setPosition:(CGPoint) position { 

myParticleEmitter.position = position; //+ offsets if needed 
[super setPosition:position]; 
} 

Вам нужен указатель на эмиттер, я обычно держу слабую ссылку на эмиттер от MySprite, и автоматически каждый раз, когда я установить и изменить положение эмиттера следующим образом.

я не сделал достаточно получить вторую часть Вашего вопроса, но я думаю, что вы можете просто обновить направление силы тяжести эмиттера, когда ваши спрайты движется/поворот, перекрывая также setRotation при необходимости