我正在使用CCParticleSystemQuad来创建粒子效果。现在我想测试来自Cocos2d场景的CGRect的碰撞。我列出了另一个类似于这个的主题并且稍微靠近但是我仍然没有完整的解决方案所以我重新列出了一个略有不同的主题标题。
我有一半的解决方案。我可以得到每个粒子的位置并可以测试碰撞,现在我想设置它们碰撞时的位置。 我目前正在继承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];
但是我不知道如何制作一个可以从我的场景中运行的setter。如果可能的话,我不想在粒子类中做碰撞。
我开始了另一个类似性质的话题,叫做“如何在Cocos2d(iphone)中获取粒子位置”,我被告知要覆盖“update”方法或“updateQuadWithParticle”方法,但我不确定如何准确地解决这个问题
如果有人能告诉我如何做到这一点的例子,我将非常感激。
答案 0 :(得分:0)
这有效,但警告CCParticleSystemQuad可能无法响应 getQuadParticle。
对于警告,请确保您的发射器是由您的子类(而不是常规CCParticleSystemQuad)构成的,并且您的getter方法在接口(.h文件)中声明并在实现(.m文件)中定义。
查看API,我看不到setParticlePos:newPosition:
的方法,但有些内容看似相似:-(void) updateQuadWithParticle:(tCCParticle*)particle newPosition:(CGPoint)pos;
我没有使用它,但只要看一眼消息来源就可以说它可以满足您的需求。
所以也许试试吧
[emitter updateQuadWithParticle:particle newPosition:newPos];
希望这有帮助。