【发布时间】:2016-05-01 01:00:03
【问题描述】:
将保持简短:
我有一个带有可移动角色的 2D 游戏,我编写了一些代码让我的玩家可以跳跃,如下所示:
if (Keyboard.GetState().IsKeyDown(Keys.Space) && hasJumped == false)
{
sound.Play(volume, pitch, pan); // plays jumping sound
position.Y -= 5f; // position of jump
velocity.Y = -10.5f; // velocity of jump
hasJumped = true;
}
但是当我按住 空格键 时,我的玩家在落地后会继续跳跃,但是我希望我的玩家在此期间只跳跃一次按住空格键的持续时间,然后必须再次按下它才能跳转。
感谢您提供的任何帮助。
更新
我的速度在我的 Collision() 函数中的一个碰撞 if 语句中重置:
if (rectangle.touchTopOf(newRectangle))
{
rectangle.Y = newRectangle.Y - rectangle.Height;
velocity.Y = 0f; // velocity reset
hasJumped = false;
}
【问题讨论】: