【问题标题】:How to change the particle angle in Cocos2DCocos2D中如何改变粒子角度
【发布时间】:2011-06-27 10:01:17
【问题描述】:

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

图1:正常粒子效果:

图 2:我需要的:
Image 2: which I need http://tinypic.com/images/404.gif

【问题讨论】:

    标签: cocos2d-iphone particles


    【解决方案1】:

    这段代码怎么样?您需要重写 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
    

    【讨论】:

    • 谢谢你,一树。我已经测试了您的代码,但无法使每个粒子都朝向中心。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多