2011-06-29 61 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];

希望這是有幫助的。