Cocos2d iphone Cocos2d波作用类似于CCJump

Cocos2d iphone Cocos2d波作用类似于CCJump,cocos2d-iphone,ccaction,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 ); ccTim

我需要创建一个与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 )];
}

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

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

嗨,拉杰,谢谢你的帖子,非常感谢,但这不是我想要的。CCWaves动作将给实际的精灵一个波浪效果。我需要精灵在波浪上移动而不影响精灵。这就是为什么我提到了CCJump动作,因为这非常接近,但我不希望跳跃效果只是需要它在上下移动到给定的X和Y位置时是平滑的。