如何在Cocos2D中更改粒子角度

时间:2011-06-27 10:01:18

标签: cocos2d-iphone particles

现在我遇到了一个新问题。如何修改每个粒子的角度使其朝向中心。就像图像一样:

图1:正常粒子有效:
Image 1: normal particles effecing http://i51.tinypic.com/nmkt9y.jpg

图2:我需要:
Image 2: which I need http://i56.tinypic.com/bffi4h.jpg

2 个答案:

答案 0 :(得分:0)

这段代码怎么样?您需要覆盖CCParticleSystemQuad update:或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

答案 1 :(得分:0)

为了将粒子朝向他们的移动方向(在您的情况下:朝向中心),您可以执行以下操作:

  1. oldPos属性添加到CCParticleSystem.h中的粒子tCCParticle结构
  2. 使用CCParticleSystem.m中oldPos中的初始粒子位置初始化initParticle:属性
  3. 在计算新位置之前,使用CCParticleSystem.m中oldPos中的当前粒子位置更新update:属性。在检查粒子是否还活着之后,我立即在第512行中执行此操作。
  4. 按照Kazuki的建议覆盖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];
    }