Теперь я встретил новый вопрос. Как изменить угол каждой частицы, чтобы она была направлена к центру. Как и изображения:
Изображение 1: воздействие нормальных частиц:
Изображение 2: которое мне нужно:
http://tinypic.com/images/404.gif
Теперь я встретил новый вопрос. Как изменить угол каждой частицы, чтобы она была направлена к центру. Как и изображения:
Изображение 1: воздействие нормальных частиц:
Изображение 2: которое мне нужно:
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
в структуру частицы tCCParticle
в CCParticleSystem.holdPos
с начальной позицией частицы в initParticle:
в CCParticleSystem.moldPos
, указав текущую позицию частицы в update:
в CCParticleSystem.m перед вычислением новой позиции. Я делаю это в строке 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];
}