雪碧速度Cocos2d 3.0

时间:2014-02-28 01:02:21

标签: cocos2d-iphone sprite

这是运行我的精灵的代码,它应该平滑地跳转并从屏幕中心开始。它偶尔会发生这种情况,但大部分时间它会崩溃到地板上。它仍然跳跃,但它并不顺畅。

浮动值

@interface HelloWorldScene () <CCPhysicsCollisionDelegate>
{
float           _yVel;
}

@end

数学

- (void) jump
{
// adjust jump speed here
if ( _player.position.y > kFLOOR_HEIGHT ) _yVel -= 0.14;
else {
    if ( _yVel != 5 ) _yVel = 0;
}

_player.position = ccp( _player.position.x, _player.position.y + _yVel);
}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我无法理解你的代码所做的一切,你应该分享更多信息(例如,什么时候发送跳转消息?当用户触摸某个屏幕按钮时?)

但是,我可以给你一些提示来改进它:

  • 避免创建像_yVel这样的属性,而是使用physicsBody.velocity。我可以看到你正在使用物理学(因为CCPhysicsCollisionDelegate),所以你不需要重新发明轮子来模拟体速。
  • 实现“跳跃”的最佳方法是将一些脉冲/力施加到physicsBody而不是直接改变速度。如果你也使用重力,它会给你“平滑”的坠落效果,通常在平台类型游戏中找到。
  • 您不应该像_y {1}}中那样将_yVel之类的浮点数与另一个确切数字进行比较。这是非常直接的理解,因为像if ( _yVel != 5 ) _yVel = 0;这样非常接近5的数字会将5.00001返回到条件。如果你真的需要这样做,你应该使用间隔,比如YES

编辑:这个很棒的教程将帮助你https://www.makegameswith.us/gamernews/369/build-your-own-flappy-bird-with-spritebuilder-and