2D跳跃错误

时间:2011-03-13 02:26:49

标签: c++ collision-detection box2d

基本上,这是我的代码:


bool Player::onCollision(BaseOBJ* obj)
{
    if(obj->name == "phys_static")
    {
        jumping = true;
    }
    return true;
}

void Player::jump() { if(jumping == true) { ApplyForce(Vec2(0.f, -13000.f), Vec2(0.f, 0.f)); jumping = false; } }

当发生碰撞时,首先调用onCollision。如果没有任何新的碰撞(例如,只有跳跃会记录,而不是从一侧移动到另一侧),则不会调用它。

它通常可以正常工作,但是如果我一直按住跳跃键(从发射到触地时),我就不能再跳了。任何解决方案?

1 个答案:

答案 0 :(得分:0)

按住键是一个经常被忽视的问题,即操作系统会将其转换为快速重复的按键。

实施例: 在文本编辑器中,按住A键。一个'a'将出现,然后,稍微延迟: aaaaaaaaaaaaa(许多重复的'A'按键被发送到活动应用程序。)

你的跳跃功能是否被反复调用,并以某种方式弄乱你的跳跃检查工作的方式?

如果没有,请回答之前评论者提出的一些问题。

P.S。一方面的建议:在我看来,'jump'应该命名为'canJump'或'allowJumping'。这避免了很多混乱。现在听起来它表明你是否跳跃,而你实际用它来表明你跳跃。

相关问题