現在我遇到了一個新問題。如何修改每個粒子的角度使其朝向中心。就像圖片:如何更改Cocos2D中的粒子角度
圖片1:正常顆粒effecing:
Image 1: normal particles effecing http://i51.tinypic.com/nmkt9y.jpg
圖片2:我需要:
Image 2: which I need http://i56.tinypic.com/bffi4h.jpg
現在我遇到了一個新問題。如何修改每個粒子的角度使其朝向中心。就像圖片:如何更改Cocos2D中的粒子角度
圖片1:正常顆粒effecing:
Image 1: normal particles effecing http://i51.tinypic.com/nmkt9y.jpg
圖片2:我需要:
Image 2: which I need http://i56.tinypic.com/bffi4h.jpg
這個怎麼樣的代碼?您需要覆蓋CCParticleSystemQuad更新:或updateQuadWithParticle:newPosition:用於指定粒子旋轉的方法。 CCParticleSystemPoint不能旋轉粒子。
@interface MyParticleSystem : CCParticleSystemQuad
@end
@implementation MyParticleSystem
- (void)updateQuadWithParticle:(tCCParticle*)particle newPosition:(CGPoint)pos
{
particle->rotation = ccpToAngle(particle->pos) * 180.0f/M_PI;
[super updateQuadWithParticle:particle newPosition:pos];
}
@end
爲了將粒子對他們的運動方向(在你的情況:向中心),你可以做到以下幾點:
oldPos
屬性添加到粒子tCCParticle
結構中CCParticleSystem .HoldPos
屬性與初始粒子的位置在initParticle:
在CCParticleSystem.moldPos
屬性機智h在計算新位置之前,在CCParticleSystem.m中的update:
中的當前粒子位置。我在檢查粒子是否仍然存在之後立即在第512行中做這件事。覆蓋CCParticleSystemQuad
由一輝建議:
- (void)updateQuadWithParticle:(tCCParticle *)particle
newPosition:(CGPoint)pos
{
CGPoint direction = ccpSub(particle->pos, particle->oldPos);
CGPoint n = ccpNormalize(direction);
CGFloat a = -CC_RADIANS_TO_DEGREES(ccpToAngle(n) - M_PI_2);
particle->rotation = a;
[super updateQuadWithParticle:particle newPosition:pos];
}
謝謝樹。我已經測試過你的代碼,但不能讓每個粒子都朝向中心。 – Huwell