Волновое действие 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];
Другие вопросы по тегам