在贝塞尔动作中移动时跳跃精灵

时间:2012-03-19 20:10:01

标签: cocos2d-iphone

我创造了一个游戏,我需要精灵跳跃(基本上上下移动),同时它在一个bezier路径上移动,所以它只在它跟随路径时垂直移动。如果我在沿着bezier路径移动的时候做了什么:

[mySprite runAction:[CCJumpBy actionWithDuration:0.1 position:ccp(0,0) height:10 jumps:1]];

它垂直跳跃但立即返回到路径上的位置。我想要的是相对于路径跳跃。

有人知道吗?

谢谢

2 个答案:

答案 0 :(得分:0)

我能想到的一件事是

  • 将mySprite放在空白图层上
  • 为mySprite项目定期执行上下操作。
  • 如果需要,可以对空白图层执行操作以跳转。

这会混合两种不同的行动。

答案 1 :(得分:0)

-(void) update:(ccTime) t
{
    // parabolic jump (since v0.8.2)
    ccTime frac = fmodf( t * jumps_, 1.0f );
    ccTime y = height_ * 4 * frac * (1 - frac);
    y += delta_.y * t;
    ccTime x = delta_.x * t;
    [target_ setPosition: ccp( ((CCNode*)target_).position.x + x, ((CCNode*)target_).position.y + y )];
}