Волновое действие Cocos2d похоже на CCJump
Мне нужно создать волновой эффект в сочетании с действием CCMove. Действие CCJump очень близко к тому, что мне нужно, но, конечно, без прыжков, поэтому его плавное движение вверх и вниз, пока спрайт не достигнет своего конечного положения x и y. Ниже приведен расчет для действия CCJump. Может ли кто-нибудь помочь мне адаптировать этот код, чтобы удалить прыжки и позволить плавный поток. Любые указатели будут с благодарностью.
-(void) update: (ccTime) t
{
// parabolic jump (since v0.8.2)
ccTime frac = fmodf( t * waves_, 1.0f );
ccTime y = height_ * 4 * frac * (1 - frac);
y += delta_.y * t;
ccTime x = delta_.x * t;
[target_ setPosition: ccp( startPosition_.x + x, startPosition_.y + y )];
}
2 ответа
Мне удалось получить волновой эффект, когда спрайт движется вдоль позиции X и Y. Приведенные ниже расчеты были взяты из класса CCWaves с некоторыми небольшими изменениями. Если кто-нибудь знает, можно ли это улучшить, скажите, пожалуйста. Для реализации этого эффекта я создал новый класс с именем CCWaveMove, который является подклассом CCActionInterval.
-(void) update: (ccTime) t
{
ccTime y = (delta_.y + (sinf(t*(CGFloat)M_PI*waves_) * height_ * 1.0f));
ccTime x = delta_.x * t;
[target_ setPosition: ccp( startPosition_.x + x, startPosition_.y + y )];
}
Используйте CCWave для волновых действий.
id waveAction = [CCWaves actionWithWaves:5 amplitude:20 horizontal:NO vertical:YES grid:ccg(15,10) duration:20];
id repeate = [CCRepeatForever actionWithAction:waveAction];
[sprite runAction:repeate];