基本上,这是我的代码:
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。如果没有任何新的碰撞(例如,只有跳跃会记录,而不是从一侧移动到另一侧),则不会调用它。
它通常可以正常工作,但是如果我一直按住跳跃键(从发射到触地时),我就不能再跳了。任何解决方案?
答案 0 :(得分:0)
按住键是一个经常被忽视的问题,即操作系统会将其转换为快速重复的按键。
实施例: 在文本编辑器中,按住A键。一个'a'将出现,然后,稍微延迟: aaaaaaaaaaaaa(许多重复的'A'按键被发送到活动应用程序。)
你的跳跃功能是否被反复调用,并以某种方式弄乱你的跳跃检查工作的方式?
如果没有,请回答之前评论者提出的一些问题。
P.S。一方面的建议:在我看来,'jump'应该命名为'canJump'或'allowJumping'。这避免了很多混乱。现在听起来它表明你是否跳跃,而你实际用它来表明你能跳跃。