0

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

图 1:正常粒子效果:
图 1:正常粒子的影响

图 2:我需要:
图 2:我需要 http://tinypic.com/images/404.gif

4

2 回答 2

0

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

  1. 将属性添加到CCParticleSystem.holdPos中的粒子结构tCCParticle
  2. 用CCParticleSystem.moldPos中的初始粒子位置初始化属性initParticle:
  3. 在计算新位置之前,使用 CCParticleSystem.moldPos中的当前粒子位置更新属性。update:在检查粒子是否还活着后,我立即在第 512 行执行此操作。
  4. CCParticleSystemQuad按照 Kazuki 的建议覆盖:

    - (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];
    }
    
于 2013-04-18T13:24:25.693 回答
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
于 2011-06-28T02:04:03.417 回答