2011-06-29 31 views
2

我正在使用CCParticleSystemQuad创建粒子效果。现在我想测试与我的Cocos2d场景中的CGRect的碰撞。我列出了另一个类似于这个主题的主题,并且更接近了一些,但是我仍然没有完整的解决方案,因此我重新列出了一个稍微不同的主题标题。使用Cocos2d中的粒子进行碰撞检测

我有一半的解决方案。我可以得到每个粒子的位置并可以测试碰撞,现在我想设置每个碰撞时的位置。 我目前继承的CCParticleSystemQuad再加入我自己的getter像这样:

-(tCCParticle*)getQuadParticle:(int)quadIndex 
{ 
    return &particles[quadIndex]; 
} 

然后在我的cocos2d中的场景,我可以得到的颗粒和位置:

tCCParticle *particle = [emitter getQuadParticle:i]; 
CGPoint pos = particle->pos; 

这工作,但警告说,CCParticleSystemQuad可能不会响应getQuadParticle。这是一个问题,但我想现在要做的是设定在一个时尚,如类似于从场景中的什么位置:

[emitter setParticlePos:i newPosition:newPos]; 

但是我不知道如何做一个二传手,这是否从工程我的场景。如果可能的话,我不想在particle子类中进行碰撞检测。

我开始了另一个类似性质的话题,叫做“如何在Cocos2d(iphone)中获取粒子位置”,并且我被告知要覆盖“update”方法或“updateQuadWithParticle”方法,但我不确定如何去做这件事究竟。

如果有人能告诉我一个如何做到这一点的例子,我将不胜感激。

+0

你想对每个单独的粒子进行碰撞检测吗?我可以告诉你如何检测发射器上的碰撞,但我不认为这是你想要的。 –

+0

是的,我需要分别管理每个粒子。有任何想法吗? – Kangoo

+0

不是。只是猜测,因为我还没有大量研究过粒子系统,但是你并不需要使用内置的粒子系统(或者你可以重写它们)。每个粒子就是用不同的色调和不透明度显示的精灵(我猜)。最好的办法是深入研究Cocos2d Code并重写一些方法,让每个精灵/粒子添加自己的身体。 –

回答

0

这可以工作,但警告CCParticleSystemQuad可能不会响应 getQuadParticle。

的提醒,请确保您的发射器是从子类中做出(而不是常规CCParticleSystemQuad),并且您的getter方法在接口(.h文件中)和宣布,以实现(.M定义文件)。

望着API,我没有看到setParticlePos:newPosition:的方法,但有一些看起来类似:-(void) updateQuadWithParticle:(tCCParticle*)particle newPosition:(CGPoint)pos;

我还没有使用它,但在源一眼表明,它确实你需要什么。

所以也许尝试 [emitter updateQuadWithParticle:particle newPosition:newPos];

希望这是有帮助的。