Cocos2d波动与CCJump类似

时间:2012-07-24 09:24:12

标签: cocos2d-iphone ccaction

我需要创建一个结合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 个答案:

答案 0 :(得分:0)

使用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];

答案 1 :(得分:0)

当精灵沿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 )];        
}