【发布时间】:2011-06-27 10:01:17
【问题描述】:
现在我遇到了一个新问题。如何修改每个粒子的角度以使其朝向中心。就像图片一样:
图 2:我需要的:
Image 2: which I need http://tinypic.com/images/404.gif
【问题讨论】:
现在我遇到了一个新问题。如何修改每个粒子的角度以使其朝向中心。就像图片一样:
图 2:我需要的:
Image 2: which I need http://tinypic.com/images/404.gif
【问题讨论】:
这段代码怎么样?您需要重写 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
【讨论】:
为了将粒子转向它们的运动方向(在您的情况下:朝向中心),您可以执行以下操作:
oldPos 属性添加到CCParticleSystem.h 中的粒子tCCParticle 结构中initParticle: 中的初始粒子位置初始化oldPos 属性update: 中的当前粒子位置更新 oldPos 属性。在检查粒子是否还活着后,我立即在第 512 行执行此操作。按照 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];
}
【讨论】: