0

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

2 回答 2

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];
于 2012-07-24T09:29:00.877 回答
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 )];        
}
于 2012-07-25T10:29:06.950 回答